Re: [問題] structure swap

看板C_and_CPP (C/C++)作者 (pony)時間16年前 (2009/02/23 20:38), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
※ 引述《tata111 (aa)》之銘言: : 我發現在swap的function中有對調 : 可是在主程式中卻沒有 : 是哪裡寫錯了嗎? : 程式碼: http://rafb.net/p/eH9UrW78.html : 執行結果 : i=0, width=10.000000, length=10.000000,area=100.000000 : i=1, width=2.000000, length=3.000000,area=6.000000 : i=2, width=5.000000, length=7.000000,area=35.000000 : Before swap: 0022FF40 0022FF4C : swap function: before 0022FF40 0022FF4C : swap function: after 0022FF4C 0022FF40 : After swap: 0022FF40 0022FF4C : i=0, width=10.000000, length=10.000000,area=100.000000 : i=1, width=2.000000, length=3.000000,area=6.000000 : i=2, width=5.000000, length=7.000000,area=35.000000 結論是你 swap 寫錯了, 給你個對的 void swap(struct rectangle *data1, struct rectangle *data2) { struct rectangle temp; memcpy(&temp, data1, sizeof(temp)); memcpy(data1, data2, sizeof(temp)); memcpy(data2, &temp, sizeof(temp)); } 順便問問自己為什麼你那樣寫會錯吧 .... 給你個提示, 參數裡的指標改值會影響到 caller 嗎 ? void test(int a, int b); // test 裡面改 a, b 會影響到 caller 嗎 ? void test(int* a, int* b); // test 改 a, b 會影響到 caller 嗎 ? void test(int* a, int* b); // test 改 *a, *b 會影響到 caller 嗎 ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.207.94
文章代碼(AID): #19efZ9v1 (C_and_CPP)
文章代碼(AID): #19efZ9v1 (C_and_CPP)