C: 使用带++/-- 的指针更新内存地址内容

标签 c pointers memory updating

<分区>

我想知道,为什么:

*some_var++;

不做同样的事:

*some_var = *some_var + 1;

... 是因为在第二个示例中 <*> 解引用运算符被用于两个不同的目的吗?

*some_var = *some_var + 1;

也就是说:*some_var 的第一个实例正在设置 &some_var 的内容,而 *some_var 的第二个实例正在调用&some_var 的当前内容? ...这是 C 无法用语句做出的区分:*some_var++;?

此外,确实:

*some_var++;

做任何事,如果是,是什么?!

感谢您的任何意见……也许是一件微不足道的事情,但我还是很好奇。

最佳答案

*some_var++;

相当于

*(some_var++);

不等同于:

(*some_var)++;

++ 后缀运算符的优先级高于 * 一元运算符。

顺便说一下,由于您没有在语句中使用 * 运算符的值,因此 *some_var++; 语句也等同于 some_var++; (假设 some_var 不是指向 volatile 对象的指针)。

关于C: 使用带++/-- 的指针更新内存地址内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14187040/

相关文章:

c - subpad 返回 NULL

c - 重新分配字符串数组

c++ - 当我尝试删除指针时我的程序崩溃了

c++ - 使用指针在 C++ 中缩小类型转换

c - 在多台计算机之间共享内存?

c - 无法为字符串数组动态分配内存

c - 使用 C 来实现其他语言是否以任何方式限制了它们的设计?

c - 函数参数和 getch() 的奇怪行为

C泛型参数转化为函数指针

matlab - MATLAB 中的 Copy-on-Write 和 varargin