Private Sub Command1_Click()
Dim a As Integer
a = 0
f (a)
Print a
a = 0
f a
Print a
a = 0
Call f(a)
Print a
End Sub
Private Function f%(x As Integer)
x = 5
f = x
End Function
输出 0 5 5
就是
f(a)输出0
f a 输出5 ,与 标准格式 call f(a) 结果相同
结论是
f(a) 与 f a 不相同
我的理解:
f (a) ,这里 (a) 被当做一个表达式处理,先计算这个表达式后得到一个结果,然后这个结果按地址传递给了 函数。函数修改了值,但因为这个参数来自表达式,表达式的结果放在 临时变量里,用完就被丢弃了。
所以 f (a) 调用时,形参的修改,无法 反应到 实参上去。
------MSDN---------------
调用一个过程时,并不一定要使用 Call 关键字。如果使用 Call 关键字来调用一个需要参数的过程,argumentlist 就必须要加上括号。如果省略了 Call 关键字,那么也必须要省略 argumentlis 外面的括号。如果使用 Call 语法来调用内建函数或用户定义函数,则函数的返回值将被丢弃。
[此贴子已经被作者于2017-12-10 19:21编辑过]