我的CS课程正在从Java转换到C中一小段时间。我现在正在忙于指针,我发现++运算符用于增加doens't工作时解引用。这不仅仅是一个好奇心问题。只是还没有习惯指针概念。我只是在做一些错误的事情,或者与指针有关吗?++指针上的运算符
例如:
*pointer++; Will not increment the value.
*pointer+=1; Will increment the value.
提前感谢!
我的CS课程正在从Java转换到C中一小段时间。我现在正在忙于指针,我发现++运算符用于增加doens't工作时解引用。这不仅仅是一个好奇心问题。只是还没有习惯指针概念。我只是在做一些错误的事情,或者与指针有关吗?++指针上的运算符
例如:
*pointer++; Will not increment the value.
*pointer+=1; Will increment the value.
提前感谢!
*pointer++;
相当于
*(pointer++); // pointer is incremented
,而不是
(*pointer)++; // pointee is incremented
*pointer++;
几乎等同于:
*pointer;
pointer = pointer + 1;
为什么它如此?
在表达*pointer++;
,++
是后缀操作符,则这样的拳头*
顺从操作中执行的pointer
++
增量值(而不是增加值)。
而*pointer += 1
只是相当于:
*pointer = *pointer + 1;
是递增pointer
指出值。
当你想增加值,你必须确保你使用括号。
(*pointer)++;
这与运营商的优先级要做到:后递增++
比提领更高的优先级运营商*
,而+=
具有较低的优先级in the table of operator precedences。这就是为什么在第一个示例中,++
应用于之后解除引用的指针,而第二个示例中+= 1
应用于解除引用的结果。
我注意到很晚,但你在概念上很好地解释! ...我真的很喜欢你的答案。 –
谢谢,这样做很有意义。 – nickcorin