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

d0r*_*ife 1 c memory pointers updating

我在想,为什么:

*some_var++;
Run Code Online (Sandbox Code Playgroud)

不做同样的事情:

*some_var = *some_var + 1;
Run Code Online (Sandbox Code Playgroud)

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

*some_var = *some_var + 1;
Run Code Online (Sandbox Code Playgroud)

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

此外,确实:

*some_var++;
Run Code Online (Sandbox Code Playgroud)

什么都做,如果是的话,什么?!

感谢任何投入......也许是一件小事,但我很好奇.

oua*_*uah 7

*some_var++;
Run Code Online (Sandbox Code Playgroud)

相当于

*(some_var++);
Run Code Online (Sandbox Code Playgroud)

并不等同于:

(*some_var)++;
Run Code Online (Sandbox Code Playgroud)

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

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