精華區beta TransCSI 關於我們 聯絡資訊
請問一下... 什麼是 call by test?? 我在做文化92年考古題看到的 我去問補習班老師.... 他說沒聽過這個名詞耶@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.32.156.96
holyspirit:你要不要把問題貼上來比較好知道題目在問什麼 218.35.53.87 05/16
deepdish:這該不會是英文印錯吧= =? 140.115.201.17 05/16
deepdish:GOOGLE 大神有查到,正在解讀英文中@@ 140.115.201.17 05/16
> -------------------------------------------------------------------------- < 作者: fly2089 (..........￾ ￾N ) 看板: TransCSI 標題: Re: [問題] 指標 時間: Mon May 16 10:57:17 2005 ※ 引述《fly2089 (..........￾ ￾N )》之銘言: 請問一下... 什麼是 call by test?? 我在做文化92年考古題看到的 我去問補習班老師.... 他說沒聽過這個名詞耶@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.32.156.96
holyspirit:你要不要把問題貼上來比較好知道題目在問什麼 218.35.53.87 05/16
PROGRAM main PROCEDURE p(x,y,z) BEGIN y=y+3; z=x+x; END BEGIN a=1; b=4; CALL p(a+b,a,a); PRINT a; END 如果用call by test 的方式來呼叫,則印出的a值為何?? 小弟不太會修文,只好這樣PO文....@@" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.32.156.96 > -------------------------------------------------------------------------- < 作者: deepdish (要和數學裝熟..) 看板: TransCSI 標題: Re: [問題] 指標 時間: Mon May 16 12:36:18 2005 ※ 引述《fly2089 (..........￾ ￾N )》之銘言: : 請問一下... : 什麼是 call by test?? : 我在做文化92年考古題看到的 : 我去問補習班老師.... : 他說沒聽過這個名詞耶@@ 用 google 找不到中文資料,找到一份投影片,請看第 62 張 http://www.wku.edu/~mostafa.mostafa/DS_site/DS_Ch1.ppt 1.5.2 Parameter Passing Call by Test:(傳測試呼叫) Parameter value Needs to be changed?(如果值需要改變) Yes Call by reference No If the type is primitive type(如果是原型) Yes Call by value No If class type is small(如果類型比較小) Yes Call by value No Call by const reference 這篇解釋應該已經很詳細了 - PS:如果上面有看不懂,請先看 61 張投影片 1.5.2 Parameter Passing Call by value(傳值呼叫) The actual parameter is copied into the formal parameter Small objects / no need to alter their values Call by constant reference(傳常數參考呼叫) Don’t copy them, just tell me where I can reach them but I do want to preserve their values Large objects / no need to alter their values Call by reference(傳參考呼叫) Don’t copy them, just tell me where I can reach them and allow me to alter their values Large or small objects / there is a need to alter their values Example double avg (const vector<int> & arr, int n, bool & errorFlag); -- 歡迎大家一起加入Intel Philanthropic Peer-to-Peer Program !!! 這項「英特爾慈善『點對點連線』計畫」旨在經由網際網路,把數百萬部個人電腦連結 起來,加速研發治療白血球過多症血癌)的藥物,從而把新藥上市的需要時間縮短約 一半。對本計畫有興趣者,可以到http://www.grid.org/download/gold/download.htm 網站,下載該程式。 一旦一批資料處理完畢,下次電腦連接上網際網路時,不論經由寬頻撥接,電腦便會 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.201.17 > -------------------------------------------------------------------------- < 作者: deepdish (要和數學裝熟..) 看板: TransCSI 標題: Re: [問題] 指標 時間: Mon May 16 12:52:07 2005 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
fly2089:嗯嗯..了解 感謝大大解惑 218.32.156.78 05/16