推 fly2089:嗯嗯..了解 感謝大大解惑 218.32.156.78 05/16
PROGRAM main
PROCEDURE p( x, y, z )
BEGIN
y = y + 3; // 2. y 代入 1 + 3 = 4
z = x + x; // 3. z 代入 5 + 5 = 10
END
BEGIN
a = 1;
b = 4;
CALL p( a + b ,a ,a ); // 1. p( 5, 1, 1)
PRINT a;
END
如果用call by test 的方式來呼叫,則印出的a值為何??
Ans:可以看到 p 傳了兩個 a 過去,可是兩個 a 的值都改成不一樣的 y 和 z
所以不太可能是 call by reference,不然會錯亂,a 不可能同時代表兩個值。
資料型態看起來應該都沒有改變,所以是 call by value
所以印出的 a 值應該是 1
--
歡迎大家一起加入Intel Philanthropic Peer-to-Peer Program !!!
這項「英特爾慈善『點對點連線』計畫」旨在經由網際網路,把數百萬部個人電腦連結
起來,加速研發治療白血球過多症(血癌)的藥物,從而把新藥上市的需要時間縮短約
一半。對本計畫有興趣者,可以到http://www.grid.org/download/gold/download.htm
網站,下載該程式。
一旦一批資料處理完畢,下次電腦連接上網際網路時,不論經由寬頻或撥接,電腦便會
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.201.17