[問題] 資料結構 變數傳遞

看板Grad-ProbAsk作者 (頭德)時間17年前 (2009/03/27 19:37), 編輯推噓2(207)
留言9則, 3人參與, 最新討論串1/1
請問一下有關變數傳遞的問題 以下程式 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

03/27 20:02, , 1F
Call-by-value 函數並不會影響原來a變數的值 所以為四
03/27 20:02, 1F

03/27 20:03, , 2F
Call-by-address 會把變數位址傳給subroutine
03/27 20:03, 2F

03/27 20:04, , 3F
我也想問三四 .不知道是什麼意思??
03/27 20:04, 3F

03/27 21:36, , 4F
call by name就是把副程式的x,y,z用a+b,a,a帶回去
03/27 21:36, 4F

03/27 21:36, , 5F
然後把a,b的值帶回去就可以得到a的值了~
03/27 21:36, 5F

03/27 21:38, , 6F
4)是用call by value的方法,但最後要把x,y,z的值傳回去
03/27 21:38, 6F

03/27 21:39, , 7F
如果先傳y在傳z,會得到a=15,如果先傳z再傳y,會得到a=14
03/27 21:39, 7F

03/27 22:37, , 8F
不好意思 我想問一下第二題25是怎麼求的?
03/27 22:37, 8F

03/27 23:26, , 9F
你想 subroutine 的y z變數位址都是a變數的位址~~
03/27 23:26, 9F
文章代碼(AID): #19pBfwKG (Grad-ProbAsk)