dim i as integer,j as integer,k as integer,h as integer 1
private sub form_click()
dim i as integer 2
i=0:j=1:k=2
call q(1,i):print i;j;k
call q(2,j):print i;j;k
call q(3,k):print i;j;k
end sub
private sub q(i)
i=i+1: print i;j;k
end sub
private sub q(byval h,j)
i=j
if h=0 then
call p(j)
else
if h =1 then call p(i) else j=j+1
end if
end sub
问题:单击窗体。窗体上显示的结果为? 答案我知道,不知道为什么是这个答案,请附上解释
问题2:当去掉标示1的语句时,单击窗体,窗体上显示的结果为?
问题3:当仅去掉标示2的语句时,单击窗体,窗体上显示的结果为?
求大神帮助啊,很急的
ãã没åè¿ä¸ªé¢ãä½ç»ä½ 解éä¸ï¼
ææ³ä½ é®è¿ä¸ªé¢çåå æ¯æ²¡æåæ¸ æ¥å ¨å±åéåå±é¨åéã
è¯å¥1éé¢å®ä¹äºi,j,çãè¿äºiï¼jæ¯å ¨å±åéã
æ¹æ³Péé¢å®ä¹i,è¿ä¸ªiæ¯å±é¨åéã
ä½ å¨æ¹æ³Qéé¢æ²¡æå®ä¹è¿iä½ä½¿ç¨äºiï¼è¿æ¶è°çå°±æ¯å ¨å±åéï¼å°±æ¯æ示1è¯å¥éçi
å¯ä»¥è¿æ ·åºåï¼å¦ææä¸ä¸ªå ¨å±åéï¼åä¸ä¸ªå±é¨åéé½ç³æ为 i ,
å¨ææç¨å°è¿ä¸ªiçæ¹æ³éï¼å¦æå½åæ¹æ³ç³æäºè¿ä¸ªi(ä¼ åä¹ç®æ¯ä¸ç§ç³æï¼å³å®ä¹ï¼ï¼å°±è¡¨ææ¯è°ç¨èªå·±ç³æçi,èä¸æ¯å ¨å±åéï¼å¦æ没æç³æè¿ï¼å°±è¡¨ç¤ºä½¿ç¨è°ç¨çæ¯å ¨å±åéã追é®
第äºä¸ªprivate sub p(i),æ¯ææ²éäºãåå»çªä½æ¾ç¤ºç»ææ¯1 1 2
0 1 2
0 2 2
0 2 3ææä¹åé½å¾ä¸å°è¿ä¸ªçæ¡ï¼è½è§£éä¸éº½ï¼
i变量被定义了两次,但是作用域不一样,一个是Click事件过程中被定义,属于过程变量,只在此过程中生效;另外一个是局部变量,一旦窗口被实例化,就在内存中存在了!
运行过程的逻辑就不说了,猜想你应该OK的!只讲一下值的变化过程:
q方法 第一个参数是传值的,参数值在中间如何变化,不会影响原先传入的变量值; 第二个参数 是传地址的,参数和被传的那个变量是公用同一块内存,互相影响;
call q(1,i) i=0作为参数传入,i和j使用同一个内存区域, j=0,注意一下q过程中i=j这条语句 j把值用赋值的方式给了局部变量i;在if...else语句中进入call p(i)方法,传地址的方式把局部变量i 给了参数i
i=i+1; 把局部变量i=1;print i;j;k 打印出来就是 1 1 2 再一次打印print i;j;k 0 1 2(两个i是不同的i值)
接下来就自己慢慢推理吧
不懂再追问....
敲错了不好意思,第二句private sub p(i)
i=i 1:print i;j;k