指针所指向的 int 的增量值

发布于 2024-09-17 22:45:32 字数 265 浏览 7 评论 0原文

我有一个 int 指针(即 int *count),我想使用 ++ 运算符来增加所指向的整数。我想我会打电话:

*count++;

但是,我收到了构建警告“表达式结果未使用”。我可以: call

*count += 1;

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

I have an int pointer (i.e., int *count) that I want to increment the integer being pointed at by using the ++ operator. I thought I would call:

*count++;

However, I am getting a build warning "expression result unused". I can: call

*count += 1;

But, I would like to know how to use the ++ operator as well. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

·深蓝 2024-09-24 22:45:32

++ 与 * 具有相同的优先级,并且结合性是从右到左。请参阅此处。 它变得更加复杂,因为即使 ++ 将与指针增量在语句评估后应用。

事情发生的顺序是:

  1. 增量后,将增量后的指针地址值记住为临时
  2. 取消引用非增量指针地址
  3. 将增量指针地址应用于计数,计数现在指向其类型的实体的下一个可能的内存地址。

您收到警告是因为您在步骤 2 中从未实际使用过取消引用的值。就像 @Sidarth 所说,您需要括号来强制执行计算顺序:

 (*ptr)++

The ++ has equal precedence with the * and the associativity is right-to-left. See here. It's made even more complex because even though the ++ will be associated with the pointer the increment is applied after the statement's evaluation.

The order things happen is:

  1. Post increment, remember the post-incremented pointer address value as a temporary
  2. Dereference non-incremented pointer address
  3. Apply the incremented pointer address to count, count now points to the next possible memory address for an entity of its type.

You get the warning because you never actually use the dereferenced value at step 2. Like @Sidarth says, you'll need parenthesis to force the order of evaluation:

 (*ptr)++
兮颜 2024-09-24 22:45:32

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

Try using (*count)++. *count++ might be incrementing the pointer to next position and then using indirection (which is unintentional).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文