传址与传值求教!!!有点急啊!!帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/27 12:29:44
Private Sub Command1_Click()
Dim x As Integer, y As Integer, z As Integer
x = 1: y = 2: z = 3
Cls
Call po1(x, x, z)

Print x, x, z
Call po2(x, x, z)
Print x, x, z
End Sub

Public Sub po1(x As Integer, y As Integer, z As Integer)
x = 3 * z + 1
y = 2 * z
z = x + y
End Sub
Public Function po2(x As Integer, y As Integer, z As Integer)
x = 3 * z + 1
y = 2 * z
z = x + y
End Function

我把过和函数用在同一个代码中,但是结果不要样。为什么呢?还有就是下面这个代码?为什么 结果是6 6 12, 7 11 11。为什么不是这样呢第一次传的是xxz
在po1中就是1 1 3
x=3*z+1 =>x=3*3+1==>x=10
y=2*z =>2*3 =>y=6
z=x+y=>10+6=>16
在这里面的y就是x传的值是1,但在上两步已经赋值给它。请老师们帮帮忙
Private Sub Command1_Click()
Dim x As Integer, y As Integer, z As Integer
x = 1: y = 2: z = 3
Cls
Call po1(x, x, z)

Print x, x, z
Call po1(x, y, y)
Print x, y, y
End Sub

Public Sub po1(x As Integer, y As Integer, z As

你这里的x已经不是传递进函数的变量了,因为在开头你定义了一个变量x,所以这个变量是全局变量,在整个区域都是起作用的,在什么地方对x进行修改都会对x起作用

写简单一点更好懂
'值传递
private sub add1(byval A as integer)
A=100
end sub
'地址传递
private sub add2(byref A as integer)
A=100
end sub

private sub command1_click
dim a as integer
dim b as integer

call add1(a)
call add1(b)

me.print a
me.print b
end sub

结果显示:
0
100

说明值传递传到函数中的是变量的值,而不是变量本身,就好像一家公司转让自己的技术,别的公司可以对技术进行任意修改,而对这家公司本身并没有影响

地址传递传到函数中的事变量本身,就好比公司被另一家吞并,另一家公司可以对公司内部进行改动。