一道vb过程(传值,传址的)

来源:百度知道 编辑:UC知道 时间:2024/07/01 04:18:47
Dim x%,y%
Private Sub Command1_Click()
x=16
Call Ex1(x) : Print x,y
End Sub

Sub Ex1(ByRef y%)
y=Sqr(y)*2
Print x,y
End Sub

谁能告诉我为什么答案是8 8
8 0

我想问那个公式不是针对x的吗,为什么第一个y值也会变成8啊?
如果第一个y值变成8的话,那么它不是也要跟着传址,第二个也变成8,而第二个y值居然是0.搞混了,谁来帮帮我?

这就是参数作用域的理解
Sub Ex1(ByRef y%)
y=Sqr(y)*2
Print x,y
End Sub
这里的y不是上面定义的y,而是当前函数的一个变量,你可以这样看

Sub Ex1(ByRef z%)
z = Sqr(z) * 2
Print x, y, z
End Sub