指针所指向的整型变量增加其值

83

我有一个 int 指针(即,int *count),我想通过使用 ++ 运算符来增加指向的整数。我认为我可以调用:

*count++;

但是,我得到了一个构建警告 "expression result unused"。 我可以:调用

*count += 1;

但是,我想知道如何使用++运算符。有什么想法吗?

2个回答

114

++ 的优先级与 * 相同,结合性是“从右到左”。请参见这里。 尽管 ++ 与指针相关联,但增量应用于语句评估之后,这使得情况更加复杂。

事情发生的顺序是:

  1. 后缀递增,记住后缀递增指针地址值作为临时值
  2. 解除引用未递增指针地址
  3. 将递增后的指针地址应用于计数器,计数器现在指向其类型的下一个可能内存地址。

您会收到警告,因为您实际上从未使用步骤2中的解除引用值。就像@Sidarth所说,您需要使用括号来强制执行评估顺序:

 (*ptr)++

11
我想补充一下,我总是将这种情况写成++*ptr;,因为优先级是明确的,如果结果不被使用,则没有必要区分前增量和后增量。 - RBerteig
6
虽然对于编译器来说可能没有歧义,但对于人类来说仍然很困惑。最好使用括号,因为这样会更容易阅读。 - Martin York
2
如果你声称++*ptr++(*ptr)更易读,那么我希望在你的下一个代码审查中被打回来。 - Martin York
2
我确实这样声明,并且已经这样做了大约25年。到目前为止还没有被打击。 - RBerteig
12
半个世纪的Lisp经验不同意你的观点。;) - Deniz Dogan
显示剩余2条评论

21

尝试使用(*count)++*count++可能会将指针增加到下一个位置,然后再使用间接引用(这是无意的)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接