精華區beta Programming 關於我們 聯絡資訊
在程式被編譯過後, call by reference其實跟call by address是一樣的, 兩者可達到的效果相同; 只是程式的寫法不同 : // 交換a與b的函式 - call by reference void swap_address(int *a, int *b) { // call by address, 函式中的parameter需要改變寫法 int c = *a; *a = *b; *b = c; } // 交換a與b的函式 - call by reference void swap_reference(int &a, int &b) { // call by reference, 函式中的parameters寫法維持不變, // 不需要用pointer表示法, 程式寫起來比較單純 int c = a; a = b; b = c; } main() { int aa=5; int bb=2; // 送入address, 進行swap swap_address(&aa, &bb); // 結果 : aa = 2, bb = 5 // 送入reference, 進行swap, 變數不用做pointer的修飾 swap_reference(aa, bb); // 結果 : aa = 5, bb = 2 } > ==> costbook.bbs@ptt.cc (CB) 的文章中提到: > reference可以當作是同一個東西,只是名字不一樣 > pointer要注意位址和值的不同 > ※ 引述《junshung@kkcity.com.tw (... (b) pic)》之銘言: > : 請問call by referance 跟call by adress 的用法有啥不同ㄋ > : 書上只寫說 它們效果一樣 但寫法不同 但我還是不太懂 > : call by referance -- * Origin: 中山大學-美麗之島BBS * From: 59.115.185.58