※ 引述《meltice.bbs@bbs.wretch.cc (三億兩千萬大散戶)》之銘言:
: ※ 引述《khoguan.bbs@ptt.cc (Khoguan Phuann)》之銘言:
: > 厚厚,關於這幾個名詞,眾說紛紜。
: > 讓我猜猜看,嗯,tinlans 的意思可能是將 call by address
: > 與 call by reference 當做同義。而 cplusplus 則是將
: > call by address 本質同等於 call by value.
: > 至於誰是誰非,或是各有道理呢?因為最近鄙人深感與人爭辯
: > 之苦,決定靜候公議。
: 我到覺得以C++來說
: foo(int *) , by address
: 跟
: foo(int &) , by reference
: 比較相近耶
: 之前有trace過組語
: 印象中底層實做是一樣的
: 都是push"位址"到參數堆疊上
by address & by reference 二者實際上,它們的意義並非如表面所看到
的那樣。
簡單的說,by reference 所工作的是操縱指標。換句話說,它所傳遞的是
是指標中的指標(&ptr==**ptr)。如此傳遞的最主要用意是在加速程式碼的
執行效率,當然也含蓋減少資料(結構...等)傳遞而達成執行效率之提昇。
以下的網址有詳細範例說明 by reference 與 by address的差別:
http://64.233.187.104/search?q=cache:N1tM1Kw5ZEAJ:www.stanford.edu/class/cs107/Handouts/19-Code-Generation-Examples.pdf
--
╭──── Origin:<不良牛牧場> bbs.badcow.com.tw (210.200.247.200)─────╮
│ ↘ Welcome to SimFarm BBS -- From : [203.204.90.144] │
╰◣◣◢ ◢◢《不良牛免費撥接→電話:40586000→帳號:zoo→密碼:zoo》 ◣◣◢ ─╯