区别:对形参的影响不同
1、在传值中函数参数压栈的是参数的副本,任何的修改是在副本上作用,没有作用在原来的变量上。
2、传址中压栈的是指针变量的副本,当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。
函数传参有三种传参方式:传值、传址、传引用。
1、按值传递
(1)形参和实参各占一个独立的存储空间。
(2)形参的存储空间是函数被调用时才分配的,调用开始,系统为形参开辟一个临时的存储区,然后将各实参传递给形参,这是形参就得到了实参的值。
2、地址传递
地址传递与值传递的不同在于,它把实参的存储地址传送给形参,使得形参指针和实参指针指向同一块地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。
3、引用传递
引用传递是以引用为参数,则既可以使得对形参的任何操作都能改变相应数据,又使函数调用方便。引用传递是在形参调用前加入引用运算符“&”。
引用为实参的别名,和实参是同一个变量,则他们的值也相同,该引用改变则它的实参也改变。
区别:
1、对实参的影响
传值:将实参的值传给形参后,实参与形参间便无任何联系,即形参的变化不会对实参产生任何影响。传值时,在形参前用 ByVal来界定。
传址(默认方式,也叫引用):形参与对应实参用相同的内存地址,形参的改变将影响实参,形参实际上是实参的别名。
例 : 按址传递
Private Sub Command1_Click() ‘按址传递
x = 10
y = 20
Cls
Print "x="; x, "y="; y, "调用前实参"
Call temp1(x, y)
Print "x="; x, "y="; y, "调用后实参"
End Sub
Sub temp1(x, y) ‘按址传递
x = x + 100
y = x * 60
Print "x="; x, "y="; y, "调用过程中的参数"
扩展资料
VB中参数传递方式有两种:传值和传址。
例: 传值调用。
Private Sub Command1_Click()
Dim x as Integer,y as Integer
x=10
y=20
Print ″x=″;x,″y=″;y;
Call temp(x,y)
Print ″x=″;x,″y=″;y;
End Sub
Sub temp (ByVal x As Integer,ByVal y As Integer)
x=x+100
y=x*60
Print ″x=″;x,″y=″;y;
End Sub
传值:把A的数值传到B,改变B,A不会跟着变,B存的是跟A一样的值;
传址:把A的地址传到B,改变B,A同时跟着变,B存的只是A的地址(类似电脑的快捷方式)。