在VB中,提到过程和和函数,一定少不了参数,参数传递时过程中非常重要的问题。通过实际参数和形式参数的传递可以实现调用过程和被调用过程之间的信息交换。在这里首先要明白实参和形参。举个例子吧:
假设定义一个过程:
Sub Employee(Num As String,Name As String,Age As Integer) ——>形式参数表
则调用这一个过程:
Call Employee( bm , "ZhangJie" , 20 ) ——>实际参数
在Visual Basic中的参数传递有两种传递方式:按值传递和按地址传递。与两种方式相对应,声明通用过程时,参数表中形参的定义格式可扩展为:[ByVal|ByRef]<变量名>[()][As 类型]
一、按值传递参数(ByVal)
ByVal是把内存数值的拷贝给程序,所以改变的只是拷贝,内存原来的值是不会改变的。
ByVal :表示该参数是按值方式传递的。 你在函数中修改此参数的值不会造成调用这个函数的函数的变量值的改变。
举例:按值传递参数
Private Sub Command1_Click()
Dim x As Integer
x = 6
Print "调用Sub过程之前x="; x
Call Test(x)
Print "调用Sub过程之后x="; x
End Sub
Sub Test(ByVal m As Integer)
m = m + 5
End Sub
运行结果如下:
二、按地址传递参数(ByRef)
ByRef是把内存地址告诉程序,所以改变的直接就是内存中的数值,VB中默认的参数传递方式是ByRef.
ByRef :表示该参数按引用方式传递。 在函数中修改此参数的值会造成实参的值发生改变。
举例:按地址传递参数
Private Sub Command1_Click()
Dim x As Integer
x = 6
Print "调用Sub过程之前x="; x
Call Test(x)
Print "调用Sub过程之后x="; x
End Sub
Sub Test(ByRef m As Integer)
m = m + 5
End Sub
运行结果如下: