在程式被編譯過後,
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