[問題] *ptrptr++ 與 (*ptrptr)++

看板C_and_CPP (C/C++)作者 (大便兔子)時間16年前 (2009/07/24 21:35), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/3 (看更多)
void testing(int **ptr){ cout<<*ptr<<endl; *ptr++; cout<<*ptr<<endl; (*ptr)++; cout<<*ptr<<endl; *ptr = *ptr + sizeof(int); cout<<*ptr<<endl; return;} 以上這段程式碼, 傳一個int*的位址進去之後得到以下結果 0x19 0x3e3970 0x3e3974 0x3e3984 從2到3行應該是*ptr前進一個int大小, 所以+4 3到4行是*ptr前進sizeof(int) = 4個int大小, 所以+16, 用16進制所以看起來像+10 但第1行到第2行到底發生了甚麼事 <囧> 這個bug搞了我一整天, 很想弄清楚 麻煩各位了<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.66.99

07/24 21:39, , 1F
也許應該先講明每一行你預期得到的結果是什麼
07/24 21:39, 1F

07/24 21:55, , 2F
第二行的ptr++之後指到一個垃圾address
07/24 21:55, 2F

07/25 01:33, , 3F
2~3行 你是前進一個 int* 大小...
07/25 01:33, 3F
文章代碼(AID): #1AQRYUJo (C_and_CPP)
文章代碼(AID): #1AQRYUJo (C_and_CPP)