'传值就相当于把要传给函数的数值复制一份后传给了他
'函数对这个数值进行修改后,原数值不变
'传址就相当于把要传给函数的数值的地址传给了他
'函数对这个数值进行修改后,原数值改变
'具体的看下面的例子
'新建窗体,添加两个命令按钮控件,复制以下代码
Private Sub Form_Load()
Command1.Caption = "传值测试"
Command2.Caption = "传址测试"
End Sub
Private Sub Command1_Click()
Dim i As Integer
传值 i
MsgBox "传值后结果为 : " & i
End Sub
Private Sub Command2_Click()
Dim i As Integer
传址 i
MsgBox "传址后结果为 : " & i
End Sub
Private Sub 传值(ByVal i As Integer)
i = 50
End Sub
Private Sub 传址(ByRef i As Integer)
i = 50
End Sub
'望采纳。。。
给你打个比喻:
我有一个抽屉,抽屉里有一本书,你向我要那本书。
传值就是我把那本书复印一份,把复印件给你,原件我留着再放回抽屉里
传址就是我把抽屉的钥匙给你,你自已去拿东西,你可以在抽屉里任意取放,换其它东西放进去也可以
传值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这种数据进行修改
形象一点:你去查分,别人把分数读出来给你听,就相当于传值
别人把分数表给你看,(这个时候你可以读取分数,也可以改分数)就是传址。这就是为什么查分的时候都是给你的数值,而不是把你放进教育局自己查档案,嘿嘿
希望对你有帮助
打这么多字好累,给分吧,嘿嘿
'传值就相当于把要传给函数的数值复制一份后传给了他
'函数对这个数值进行修改后,原数值不变
'传址就相当于把要传给函数的数值的地址传给了他
'函数对这个数值进行修改后,原数值改变
上面说的够清楚
传址,传的是地址,即使不是这个数字的,但也认为这个数字,就像别人说的租房子,就是地址,不管谁住,只要有地址,就能找到人,即使换人也不管,直管这个地址
但传值就不同了,和上面的正好不同,只要数字,就像租房子的人一样,只记录人名(不允许重名),就能找到
明白吗?????
byval
很大。传值传址可能改变当前的值。