在VB中传值调用和传址调用的区别?????

发布网友

我来回答

2个回答

热心网友

传值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这种数据进行修改
形象一点:你去查分,别人把分数读出来给你听,就相当于传值
别人把分数表给你看,(这个时候你可以读取分数,也可以改分数)就是传址。这就是为什么查分的时候都是给你的数值,而不是把你放进教育局自己查档案,嘿嘿
希望对你有帮助
打这么多字好累,给分吧,嘿嘿

热心网友

传值的话,在子程序中值改变不会传递到主程序。
传址的话,在子程序中值改变,主程序中也会变。
例子:
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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com