作者xicktod (頭德)
看板Grad-ProbAsk
標題[問題] 資料結構 變數傳遞
時間Fri Mar 27 19:37:26 2009
請問一下有關變數傳遞的問題
以下程式
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
1F:推 s987692:Call-by-value 函數並不會影響原來a變數的值 所以為四 03/27 20:02
2F:→ s987692:Call-by-address 會把變數位址傳給subroutine 03/27 20:03
3F:→ s987692:我也想問三四 .不知道是什麼意思?? 03/27 20:04
4F:→ depend:call by name就是把副程式的x,y,z用a+b,a,a帶回去 03/27 21:36
5F:→ depend:然後把a,b的值帶回去就可以得到a的值了~ 03/27 21:36
6F:→ depend:4)是用call by value的方法,但最後要把x,y,z的值傳回去 03/27 21:38
7F:→ depend:如果先傳y在傳z,會得到a=15,如果先傳z再傳y,會得到a=14 03/27 21:39
8F:→ xicktod:不好意思 我想問一下第二題25是怎麼求的? 03/27 22:37
9F:推 s987692:你想 subroutine 的y z變數位址都是a變數的位址~~ 03/27 23:26