我的CS課程正在從Java轉換到C中一小段時間。我現在正在忙於指針,我發現++運算符用於增加doens't工作時解引用。這不僅僅是一個好奇心問題。只是還沒有習慣指針概念。我只是在做一些錯誤的事情,或者與指針有關嗎?++指針上的運算符
例如:
*pointer++; Will not increment the value.
*pointer+=1; Will increment the value.
提前感謝!
我的CS課程正在從Java轉換到C中一小段時間。我現在正在忙於指針,我發現++運算符用於增加doens't工作時解引用。這不僅僅是一個好奇心問題。只是還沒有習慣指針概念。我只是在做一些錯誤的事情,或者與指針有關嗎?++指針上的運算符
例如:
*pointer++; Will not increment the value.
*pointer+=1; Will increment the value.
提前感謝!
*pointer++;
相當於
*(pointer++); // pointer is incremented
,而不是
(*pointer)++; // pointee is incremented
*pointer++;
幾乎等同於:
*pointer;
pointer = pointer + 1;
爲什麼它如此?
在表達*pointer++;
,++
是後綴操作符,則這樣的拳頭*
順從操作中執行的pointer
++
增量值(而不是增加值)。
而*pointer += 1
只是相當於:
*pointer = *pointer + 1;
是遞增pointer
指出值。
當你想增加值,你必須確保你使用括號。
(*pointer)++;
這與運營商的優先級要做到:後遞增++
比提領更高的優先級運營商*
,而+=
具有較低的優先級in the table of operator precedences。這就是爲什麼在第一個示例中,++
應用於之後解除引用的指針,而第二個示例中+= 1
應用於解除引用的結果。
我注意到很晚,但你在概念上很好地解釋! ...我真的很喜歡你的答案。 –
謝謝,這樣做很有意義。 – nickcorin