作者james732 (好人超)
看板C_and_CPP
標題Re: [問題] swap兩個元素的方法
時間Tue Apr 27 15:46:54 2010
※ 引述《nana0130 (小那)》之銘言:
void swap(int a, int b) //交換a跟b指向位置的值
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int i = 5, j = 10;
swap(i, j);
}
在這個例子裡, main 裡面的 i, j 與 swap 裡面的 a, b
a 是 i 的複製品,b 是 j 的複製品
因此你交換 a, b 對 i, j 是毫無影響的
(你改變了影印稿上面的資料,會期望正本的資料也跟著改變嗎 XD)
至於為什麼用 swap(int *i, int *j) 或 swap(int &i, int &j) 就會成功
如果有疑惑的話,請參考書本上或者網路上關於 pointer 與 reference 的說明
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46
→ eric111043:Call by value 跟 Call by address 的差別 04/27 18:24
推 Dannvix:沒有 call by address 啦,call by reference 04/27 19:35
→ james732:我這篇文完全沒提到名詞 就是因為一提下去就很亂...XDDD 04/27 19:42
推 adks3489:聽說..提到名詞有吵架的可能性 04/27 19:59
→ VictorTom:其實明確的定義Programing Language的書應該都有吧@_@" 04/27 20:01
→ james732:不過每個人的想法畢竟不同 講下去頭就很暈了 04/27 20:02
推 hilorrk:我們compiler老師也會講call by address... 04/27 23:40
→ hilorrk:老實說比起名字 底下到底是在幹麻還比較重要 04/27 23:40