VB中过程调用时有几种参数传递方式,说明其区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB中过程调用时有几种参数传递方式,说明其区别相关的知识,希望对你有一定的参考价值。

参考技术A 有三个
(1)按值传递
这种传递方式只能将实参的值传递给形参,而不能将运算后形参的值再传递给实参,即这种传递只能是单向的,既使形参的值发生了改变,此值也不会影响到调用然后将该值传递给对应的形参。如果实在参数是常量或表达式,则默认采用的是值传递,在传递时先计算表达式的值,然后将该值传递给对应的形参。
(2)按地址传递
这种传递方式不是将实在的参数的值传递给形参,而是将存放实在参数值的内存中的存储单元的地址传递给形参,因此形参和实参具有相同的存储单元地址,也就是说,形参和实参共用同一存储单元。在调用SUB过程或FUNCTION过程时,如果形参的值发生了改变,那么对应的实参的值也将随着改变,并且实参会将改变后的值带回调用该过的程序,即这种传递是双向的。如果实在参数是变量,则默认采用按地址传递。
(3)命名传递
前面讲的按值传递和按地址传递,是按照形参和实参在参数表中的位置一一对应传递的。有时我们在调用过程语句的实在参数表中所写的实在参数和在过程定义语句的形式参数表中所写的形式参数位置并不一一对应,这时就需要使用命名传递。
使用命名传递,在调用过程语句的实在参数表中的参数格式为:
<形式参数>:=<实在参数>
其含义为:将右边实在参数的值传递给左边的形式参数。

VB.sub过程和function过程的区别

function是函数,sub是子程序,都可以传递参数,但函数有返回值,子程序没有

 function   可以用自身名字返回一个值,sub   需定义别的变量,用传址方式传回值。 
         
Sub   过程与Function   过程的区别:  
  • Sub   过程定义时无需定义返回值类型
  • Function   过程一般需要用“As   数据类型”   定义函数返回值类型。      

VB有两大类过程——事件过程和通用过程;
通用过程又分:
  • 函数过程(Function过程)又称自定义函数过程、
  • 子过程(Sub过程)
函数过程名有返回值,子过程名不能保存值。函数可以参与表达式的计算,子过程不能
在表达式中调用时一定要用函数过程,否则一般用子过程
function   可以用自身名字返回一个值,自带的函数功能是一样的 例如:inputbox
sub   需定义别的变量,用传址方式传回值。例如:msgbox

Sub   过程与Function   过程的区别:        
  1.   Sub   过程定义时无需定义返回值类型,而Function   过程一般需要用“As   数据类型”   as子句决定函数过程返回值
            的 类型,如果忽略As子句,则函数过程的类型为变体型         
  2.   Sub   过程中没有对过程名赋值的语句,而Function   过程中一定有对函数名赋值的语句。        
  3.   调用过程:调用   Sub   过程与   Function   过程不同。调用   Sub   过程的是一个独立的语句,而调用函数过程只 
         是表达式的一部分。Sub   过程还有一点与函数不一样,它不会用名字返回一个值。但是,与   Function过程一样, 
         Sub   过程也可以修改传递给它们的任何变量的值。          
  4.   调用   Sub   过程有两种方法:        
          以下两个语句都调用了名为   MyProc   的   Sub   过程。          
               Call     MyProc   (FirstArgument,   SecondArgument)          
               MyProc     FirstArgument,   SecondArgument        
         注意当使用   Call   语法时,参数必须在括号内。若省略   Call   关键字,则也必须省略参数两边的括号

以上是关于VB中过程调用时有几种参数传递方式,说明其区别的主要内容,如果未能解决你的问题,请参考以下文章

在vb中传递参数的方法有几种 带你了解最常见的2种方法

向过程传递参数有啥传递和啥传递两种方法,其中啥是VB默认的参数传递方式?

vb当中,参数传递默认方式是传值?传址?还是传址和传值?

vb Navigate函数怎样传递参数

c#中方法的参数可以有哪几种传递方式

VB系统中默认的参数传递方式?