江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
关于过程嵌套调用题目的分析

关于过程嵌套调用题目的分析——答wsxy网友的提问

关键词嵌套调用        

曹苏群   http:/caosuqun.bokee.com                                  

问题提出:

(wsxy)

分析如下题目运行结果:

dim A as integer
private sub form_click()
dim B as integer
dim D as integer
A=1:B=2
D=fun(A,fun(A,B))
debug.print A,B,D
end sub
private function fun(K as integer,N as integer)as integer
debug.print K,N
k=N+A+K
N=K+A+N
fun=K+N
debug.print fun
End function

答:

首先执行:fun(A,B) A1B2

由于实在参数是:A,B 对应形式参数是K,N,由于是按地址传递,因此AK指向同一内存单元,BN指向同一内存单元。

因此执行deug.print K,N 输出第一行:1  2

执行k=N+A+K 即:k=2+1+1=4 注意此时A也变为4;

执行N=K+A+N 即:N=4+4+2=10 注意此时B也变为10

执行fun=K+N 即:fun=14

执行 debug.print 输出第二行:14

 

再执行:fun(A,fun()) A4fun()14

同上分析,执行deug.print K,N 输出第三行:4   14

执行k=N+A+K 即:k=14+4+4=22 注意此时A也变为22;

执行N=K+A+N 即:N=22+22+14=58

执行fun=K+N 即:fun=80

执行 debug.print 输出第四行:80

 

最后执行:debug.print A,B,D  输出第五行:22 10 80