Re: [問題] structure swap
※ 引述《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
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章