VB中的byRef和byVal
在VB中,提到过程和和函数,一定少不了参数,参数传递时过程中非常重要的问题。通过实际参数和形式参数的传递可以实现调用过程和被调用过程之间的信息交换。在这里首先要明白实参和形参。
一、按值传递参数(ByVal)
ByVal是把内存数值的拷贝给程序,所以改变的只是拷贝,内存原来的值是不会改变的。
ByVal :表示该参数是按值方式传递的。 你在函数中修改此参数的值不会造成调用这个函数的函数的变量值的改变。
二、按地址传递参数(ByRef)
ByRef是把内存地址告诉程序,所以改变的直接就是内存中的数值,VB中默认的参数传递方式是ByRef.
ByRef :表示该参数按引用方式传递。 在函数中修改此参数的值会造成实参的值发生改变。
Sub test1(ByRef a)
a = a + 1
End Sub
Sub test2(ByVal b)
b = b + 1
End Sub
Sub main()
x = 5
y = 5
test1 x
test2 y
MsgBox "x=1, y=1,调用子程序后:" & vbCr & "x=" & x & " y=" & y
End Sub
这个时候的输出情况是x=6 y=5。
三、总结
byref会修改主调程序的变量值,而byval不会改变主调程序的变量值。