我明白,为了它的工作,它需要
void increment(int *value) { (*value)++; }
这是因为它需要括号,因为优先级如何工作(如果我错了,请纠正我).但是,当我执行以下操作时,怎么没有发生编译错误?由于没有括号,因此没有改变预期的值,但这究竟是什么变化?
void increment(int *value) { *value++; }
kvanberendon.. 7
value
是一个指向整数的指针.指针算法的规则说如果你做一个类似的操作value++
,那么它将指向value + sizeof(int)
(以字节为单位).
这里发生的事情是你将取消引用你value
得到的一些你扔掉的rvalue,然后递增value
(不是它指向的东西,而是指针本身).
value
是一个指向整数的指针.指针算法的规则说如果你做一个类似的操作value++
,那么它将指向value + sizeof(int)
(以字节为单位).
这里发生的事情是你将取消引用你value
得到的一些你扔掉的rvalue,然后递增value
(不是它指向的东西,而是指针本身).