VB程序调用中的形参和实参问题
发布网友
发布时间:2023-09-12 18:15
我来回答
共4个回答
热心网友
时间:2023-09-21 21:15
在讨论形参和实参之前,先了解下For的机制。
以下句为例,
For i = min to max step t
'...
Next i
对于循环变量i,每一次next i后,先执行一次i=i+t,接着判断i>=max,若为真则继续执行循环体,否则跳出。
好了,接下来说形参、实参的问题。
在sub suba(k,s) 过程,没有ByVal关键字,则默认为ByRef,即以传址的方式运行过程(过程中k和s值的改变会影响到窗体点击事件中的k和s的值)。
for k=1 to 2
call suba(k,s)
s=s+k
next k
循环开始:k=1,s=0
运行过程:k=1*1+1=2,s=6
退出过程:k=2,s=6+2=8
next k:k=2+1=3,s=8
判断:k=3>2,退出循环。
于是,最后k=3,s=8
过程中的k和s为形参,窗体点击事件中的k和s为实参。
以ByRef(传址)方式运行过程,形参的改变即为实参的改变。
热心网友
时间:2023-09-21 21:16
1、suba(k,s)中的k,s是形参;
2、call suba(k,s) 时的参数k,s是实参
1、2中的k,s意义是不一样的。
3、现在我们看看运行过程
当k=1时,call suba(1,s)返回s=6,s=s+k后 s=7
当k=2时,call suba(2,s)返回s=6,s=s+k后 s=8
热心网友
时间:2023-09-21 21:16
suba 被调用了一次,
默认是地址传递,所以值发生改变。
第一次K进去是1然后K编程了2,S变成了6结束调用,
这个时候事件过程里面的S=S+K
S就等于8
接着执行NEXT k 这个时候K变成了3
不循环。然后结束执行。
热心网友
时间:2023-09-21 21:17
private sub form_click()
for k=1 to 2 进入循环
call suba(k,s) 将K,S的值进入过程
s=s+k s=8
next k k=2+1=3 跳出循环
end sub
sub suba(k,s) K进来时为1
k=k*k+1 k=2
s=6 s=6 返回事件
end sub
K=3 S=8