→ yuanyu90221:應該該還有 用傳址方式的寫法吧 ?? 04/27 15:35
→ yuanyu90221:你的問題應該是scope的問題吧 04/27 15:36
→ yuanyu90221:因為是call by value 所以 原本的變數內容並不會改變 04/27 15:39
→ yuanyu90221:如果不傳址 只是將兩個傳入的值 放入local 變數交換值 04/27 15:41
→ yuanyu90221:6F的文章真是詳細爬文才發現XD 04/27 16:27
→ applecool:#define SWAP(x,y) {x^=(y^=(x^=y));} 04/27 17:43
推 VictorTom:applecool 那個如果傳了x與y是同一變數就....XD 04/27 17:48
推 VictorTom:k大的網頁好炫....XD 04/27 17:55
推 applecool:?? 04/27 18:00
推 applecool:同一變數為何要swap? 04/27 18:03
推 VictorTom:曾經寫迴圈這麼玩的時候不小心這麼SWAP了array的同一個 04/27 18:09
→ VictorTom:element, 然後debug半天才找到為什麼被swap成0....Orz 04/27 18:10
→ VictorTom:只是hint一下可能有意料之外的side effect....XD 04/27 18:11
→ VictorTom:又, 如果swap的對象是pointer, 而同樣的資料的pointer 04/27 18:12
→ VictorTom:會指到同一位址的時候, 也會被這個side effect影響到:) 04/27 18:12
推 applecool:有道理 04/27 18:13
→ applecool:受教了 那不如使用 04/27 18:16
→ applecool:#define SWAP(x,y) {int t=y; y=x; x=t;} 04/27 18:16
→ applecool:謝謝 V 大 :-) 04/27 18:18
→ applecool:我也好想請教K大的網頁是怎麼做的 ^^ 謝謝 04/27 18:19
推 VictorTom:如果x,y不是int會....XD 04/27 18:30
→ applecool:那直接複製記憶體吧~~ 04/27 18:34
→ applecool:memcpy 或 memmove 04/27 18:37
推 knuckles:喔喔 那是我做的仿BBS網站啊 每頁加個換頁符號^L就行了 04/28 02:46
推 applecool:C++ std::swap 05/07 11:48
推 applecool:更正: #define SWAP(x,y) {x^=(y^=(x^=y));} 是不正確的 01/05 23:58
→ applecool:跟上面一樣是更正啟示: 記憶體複製的手法也不完全正確 01/06 00:02