亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

指針表達式:* ptr ++,* ++ ptr和++ * ptr

指針表達式:* ptr ++,* ++ ptr和++ * ptr

C++ C
米脂 2019-09-18 14:41:16
最近我遇到了這個我自己無法理解的問題。這三個表達式真正意味著什么?*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也回答了這個問題。


查看完整回答
反對 回復 2019-09-18
?
慕絲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;

}


查看完整回答
反對 回復 2019-09-18
  • 3 回答
  • 0 關注
  • 1464 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號