我在想,为什么:
*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++;
做任何事情,如果是的话,是什么?!
感谢您的任何意见......也许是一件微不足道的事情,但我很好奇。
答案 0 :(得分:7)
*some_var++;
相当于
*(some_var++);
并不等同于:
(*some_var)++;
++
后缀运算符的优先级高于*
一元运算符。
顺便说一下,由于您未在语句中使用*
运算符的值,*some_var++;
语句也等同于some_var++;
(假设some_var
是不是指向volatile
对象的指针。
答案 1 :(得分:0)
请参阅以下示例:
ex: 1
int main()
{
char *ptr = "stackoverflow";
*ptr++;
printf ("%s\n", ptr);//this will print "tackoverflow" i.e pointr is incremented.
return 0;
}
ex:2
int main()
{
char *ptr = "stackoverflow";
*ptr = *ptr + 1;// here you are trying to assing incremented content to *ptr, but this will give you error because string literal "stackoverflow" is stored in the read only memory so you can't modify .
}