最近我遇到了這個我自己無法理解的問題。這三個表達式真正意味著什么?*ptr++*++ptr++*ptr我試過里奇。但不幸的是,他無法按照他講述的這三項行動。我知道它們都是為了遞增指針/指向的值而執行的。我還可以猜測可能有很多關于優先級和評估順序的事情。就像一個指針首先遞增指針然后取出指針的內容,一個簡單地取出內容然后遞增指針等等。正如你所看到的,我對他們的實際操作我沒有清楚的理解,我想盡快明確。但是當我有機會將它們應用到程序中時,我真的迷失了。例如:int main(){ const char *p = "Hello"; while(*p++) printf("%c",*p); return 0;}給我這個輸出:ello但我的期望是它會印刷Hello。最后一個請求 - 請給出一些示例,說明每個表達式在給定的代碼段中的工作原理。因為大多數時候只有一段理論飛過我的腦海。
3 回答
隔江千里
TA貢獻1906條經驗 獲得超10個贊
假設ptr指向數組的第i個元素arr。
*ptr++求值arr[i]并設置ptr為指向的第(i + 1)個元素arr。它相當于*(ptr++)。
*++ptr設置ptr為指向的第(i + 1)個元素arr并進行求值arr[i+1]。它相當于*(++ptr)。
++*ptr增加arr[i]1并評估其增加的價值; 指針ptr保持不變。它相當于++(*ptr)。
還有一個,但你需要括號來寫它:
(*ptr)++增加arr[i]1并在增加之前評估其值; 指針ptr再次保持不變。
其余的你可以弄清楚自己; @Jaguar也回答了這個問題。
慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
*ptr++ : post increment a pointer ptr
*++ptr : Pre Increment a pointer ptr
++*ptr : preincrement the value at ptr location
閱讀此處有關預增量和后增量運算符的信息
這將 Hello作為輸出
int main()
{
const char *p = "Hello";
while(*p)
printf("%c",*p++);//Increment the pointer here
return 0;
}
- 3 回答
- 0 關注
- 1464 瀏覽
添加回答
舉報
0/150
提交
取消
