看板 C_and_CPP 關於我們 聯絡資訊
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
bleed1979:也許應該先講明每一行你預期得到的結果是什麼 07/24 21:39
zerodevil:第二行的ptr++之後指到一個垃圾address 07/24 21:55
softwind:2~3行 你是前進一個 int* 大小... 07/25 01:33