2010-08-15 136 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