我想知道,为什么:
*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
对象的指针(。
请参阅以下示例:
ex: 1
int main()
{
char *ptr = "stackoverflow";
*ptr++;
printf ("%sn", 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 .
}