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

时间:2013-01-06 21:36:55

标签: 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++;

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

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

2 个答案:

答案 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 .
}