一直使用C语言运算符优先级表,都觉的*和++属于同一个级别的没毛病,而且结合方向也是自右向左的。直到后面在看代码时遇到(*p_rx++;),解读:编译器会把此行代码看成*(p_rx++);即指针p_rx先把所指向的对象内容取出来,指针p_rx再自增指向下一个地址;而不是看成是(*p_rx)++;即先取出指针所指向对象内容,对象再自增。
验证如图:
验证结果:
先打印p的地址,再执行*p++;结果是1,说明是先取出指针指向的内容,然后指针p再自增,因为编译器是32位的,整型int占4个字节,因此自增后+4得到1638216.,所以站在编译器角度来看*p++;是*(p++)。