作者IDontBite (大便兔子)
看板C_and_CPP
標題[問題] *ptrptr++ 與 (*ptrptr)++
時間Fri Jul 24 21:35:25 2009
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