在VB中传值调用和传址调用的区别?????
发布网友
发布时间:2022-03-25 19:38
我来回答
共2个回答
热心网友
时间:2022-03-25 21:08
传值ByVal是将数值传给形参
我以一个例子讲解
Function add(Byval a as integer,Byval b As integer)
Dim c As Integer
a=a+1
b=b+1
c=a+b
add=c
End Function
上面的是传值,也就是当调用的时候,例如
Add(a,b)
这里实际上是等同于
Add(a值,b值)
如:
aa=12:bb=3
调用Add(aa,bb)时,系统会把数值12和3传给函数“Add”
结果是aa,bb原值未变
但是传址不一样
同样的功能,我把它改成传址时的模式:
Function add(ByRef a as integer,ByRef b As integer)
Dim c As Integer
a=a+1
b=b+1
c=a+b
add=c
End Function
这个时候,如果执行下面的程序段:
aa=12:bb=3
Add(aa,bb)
Print aa & " " & bb
你会发现他们的值变了
因为传值的时候是将数据给函数,这样函数无法对aa,bb这种数据进行修改
形象一点:你去查分,别人把分数读出来给你听,就相当于传值
别人把分数表给你看,(这个时候你可以读取分数,也可以改分数)就是传址。这就是为什么查分的时候都是给你的数值,而不是把你放进教育局自己查档案,嘿嘿
希望对你有帮助
打这么多字好累,给分吧,嘿嘿
热心网友
时间:2022-03-25 22:26
传值的话,在子程序中值改变不会传递到主程序。
传址的话,在子程序中值改变,主程序中也会变。
例子:
a=1
b=2
call fun(a,b)
sub fun(byref a as integer,byval b as integer)
a=3
b=4
end sub
主程序执行完call fun(a,b)后,a=3, b=2