→ Feis:c 存 a 的位址, *c 表示 a, 同理 *d 表示 b 11/21 11:37
→ purincess:temp=*c 是 temp為指標c指到的記憶體位置所存的內容 11/21 11:37
→ rim0401:所以輸出是? 11/21 11:41
→ Feis:10 5 阿 11/21 11:43
推 Laleh:這是call by value吧 有call by address? 11/21 11:51
推 bigpigbigpig:第3,4行→c才是pointer *c是c指向之記憶體位置的內容 11/21 11:56
→ bigpigbigpig:*c = *d 的語義絕對不是「指標c變指標d」 :) 11/21 11:57
推 BlazarArc:C# 不是也有 struct 跟 class 之分嗎? 11/21 14:27
→ BlazarArc:C++令新手困擾的就是*跟&在宣告跟運算中是不同的意思XD 11/21 14:29
謝謝p大、f大和b大,交換的地方終於懂了
但仍有一個地方越看越怪,第1行何不是void swap (int c , int d){
如果第1行改void swap (int c , int d){會怎樣?
※ 編輯: rim0401 來自: 61.57.32.66 (11/21 15:34)
推 BlazarArc:那你在 swap 內的 c d 是一個 copy 版本的 int 11/21 15:35
→ BlazarArc:不會改到呼叫 swap 所傳的變數內容 11/21 15:36
→ BlazarArc:所以想要做到 swap 的語意,真正交換變數的值 11/21 15:36
→ BlazarArc:你要透過 pointer 或者 reference(c++) 來做 11/21 15:37
→ bigpigbigpig:第1行改成void swap(int c,int d),第8行你會怎麼改? 11/21 16:40
→ rim0401:單純好奇 如果改第1行 第8行不動會有什麼差異 11/22 13:06
→ rim0401:所以這是call by address的固定用法 我懂了,謝謝 11/22 13:06
→ bigpigbigpig:你可以試試看 形式參數與實際引數兩者變數型態不符:) 11/22 13:39
推 BlazarArc:沒有啥call by address, 不要再誤用了 11/22 14:07
推 BlazarArc:看一下精華區 z-3-7-9 11/22 14:09
推 a27417332:C++不是只有reference跟value這兩種東西存在嗎OAO 11/23 14:55
※ 編輯: rim0401 (61.57.32.66), 11/05/2015 08:18:58