vb 题求解
发布网友
发布时间:2023-06-22 10:12
我来回答
共2个回答
热心网友
时间:2024-12-11 17:07
Private Sub Command1_Click()
a = 1: b = 2: c = 3 '分别对abc赋值
Call test(a, b + 3, (c)) '调用函数,即是test(1,5,3),这里的a是传地址,b+3和(c)都是传值,调用函数后abc的值分别是223
Print "main:"; a; b; c '打印结果是main:2 2 3
End Sub
Private Function test(p, m, n) 'test(1,5,3)即是p=1,m=5,n=3,
p = p + 1: m = m + 1: n = n + 1 'p、m、n的值都自加1,即是p=2、m=6、n=4
Print "sub:"; p; m; n '打印结果是: sub:2 6 4
End Function
传值与传址区别
传址:调用过程时,实参变量将其地址传递给形参,在被调过程中对形参值的改变相当于对实参的修改。常用于传字符串、数组;
传值:调用过程时,将实参的值复制到形参,实参与形参断开联系。被调过程中,形参在自己存储单元中进行,过程调用结束后,形参占用的存储空间自动释放,实参保留初始值。常用于模块间传递信息,但不影响主调过程,可减少程序之间的藕合。
注意:使用传址时,对应的实参不能是表达式、常数,因为要传变量地址
热心网友
时间:2024-12-11 17:07
我试了一下。
虽然不是很清楚。但我想也*不离十了。
这是因为隐式声明引起的。
自定义函数。你用的就是隐式声明。这样的话,他是找地址传值的。
其中,A是直接传的地址,所以在自定义函数中的P=P+1是直接影响A值的。
另外。B+3地址就不同了。(C)加上括号就是按值传。