2010-08-15 115 views
3

我正在使用c指針,其中如果我增量爲* p ++它遞增p但只返回p指向之前它增加的值。我如何增加p指向的值。遞增c指針

+0

這實際上是一個直接的C問題,所以我添加了標籤。 – JeremyP 2010-08-15 12:05:52

回答

4

後綴++具有比*一個更高的優先級,則編譯器將讀取*p++作爲*(p++)。由於您要增加*p的值,因此需要大括號:(*p)++將返回值*p,然後將p的值加1。 ++(*p)將遞增*p的值,然後返回此值。

很可能你忽略了括號在過去的情況下,寫++*p,但我建議不要做,因爲++(*p)是雙到(*p)++,但++*p它不是*p++

+0

-1這是怎麼回事?問題是如何增加p指向的值,而不是如何增加p,然後獲得新p指向的值。 – JeremyP 2010-08-15 12:01:50

+0

-1。 Neeraj問:「我如何增加p指出的值。」這增加了指針'p',然後推斷它得到'p'現在指向的值。 – Stephen 2010-08-15 12:01:55

+0

Ooops。這是我的一個誤讀。我認爲我的upvoters也是這樣做的:-)。我正在解決這個問題。 – 2010-08-15 12:08:03

6

做到這一點:(* P)++

使用括號,你已經表明你的意思是遞增的價值指向。

+0

如果您不需要該值並且喜歡激怒不需要的括號'++ * p'也應該起作用。 – 2010-08-15 12:02:30

+0

+1。我不明白爲什麼其他答案會被投票或至少不會被拒絕。 Ian的答案在這裏是唯一正確的答案。問題的提問者希望增加p **指向的值而不是p的值。 – Stephen 2010-08-15 12:02:48

+0

@Stephen這是一個稍微含糊不清的問題「它增加p」聽起來像他真的想增加指針。在重讀時,我認爲這是正確的答案,雖然 – cobbal 2010-08-15 12:07:51