C语言_关于指针的解引用与++
运算符及其优先级
int x=*p;
与*的运算优先级是平级关系,都是单目运算符,运算顺序是从右向左进行,什么是运算顺序呢?就比如加减法两个运算符是平级关系,但运算顺序是左到右进行,就比如1+2-3是先计算左边的’+‘再计算右边的’-'。那么根据优先级表,与*是从右向左顺序进行的,则此处的*p,先计算第二个++,再计算*,再计算第一个++。
可以如此理解:后置的特点是:将要运算时,待前面全部的表达式运算完毕后才会进行,我们可以把*p看作是:(*)p++,待++*p全部计算完成后,再单独给p++。那么:下一步就变成了计算++*p,此处*在运算符的右边,则先*p取值,再说。前置的特点是先+1并回写,此处操作的对象是*p。整个前置*p操作完后,(*)p的前半部分就结束了。这时我们再单独给p进行后置++,操作的对象是指针p而不是*p,因为*已经做过了运算。
最后结果:x=1, a=1.