看板 Grad-ProbAsk 關於我們 聯絡資訊
請問一下有關變數傳遞的問題 以下程式 Program Test() begin a=4; b=7; Call Subroutine (a+b,a,a) Print a ; end Subroutine (x,y,z) begin y=y+10; z=x+z; end 以下有4種傳遞方式 1) Call-by-value 2) Call-by-address 3) Call-by-name 4) Call-by-value-result 問分別的執行結果?? Ans 1) 4 2) 25 3) 35 4) 14 or 15 有板上的大大可以解釋一下嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.75.150
s987692:Call-by-value 函數並不會影響原來a變數的值 所以為四 03/27 20:02
s987692:Call-by-address 會把變數位址傳給subroutine 03/27 20:03
s987692:我也想問三四 .不知道是什麼意思?? 03/27 20:04
depend:call by name就是把副程式的x,y,z用a+b,a,a帶回去 03/27 21:36
depend:然後把a,b的值帶回去就可以得到a的值了~ 03/27 21:36
depend:4)是用call by value的方法,但最後要把x,y,z的值傳回去 03/27 21:38
depend:如果先傳y在傳z,會得到a=15,如果先傳z再傳y,會得到a=14 03/27 21:39
xicktod:不好意思 我想問一下第二題25是怎麼求的? 03/27 22:37
s987692:你想 subroutine 的y z變數位址都是a變數的位址~~ 03/27 23:26