为什么 *p++ 先取消引用指针然后递增指针地址?
Why *p++ dereferences a pointer first and then increments pointer adress?
C 运算符优先级图表如下所示:
为什么 post increment/decrement 在列表中排在第一位,但 *p++ 导致首先取消引用指针然后递增它指向的地址?
*p++
解析为 *(p++)
.
p++
的值是p
(副作用是递增的p
),所以*p++
的值与[=17的值相同=].
除了副作用,*p
和 *p++
完全相同。
整数也会发生完全相同的事情:
int n = 6;
printf("%d\n", 7 * n);
printf("%d\n", 7 * n++); // except for the side-effect same value as above
C 运算符优先级图表如下所示:
为什么 post increment/decrement 在列表中排在第一位,但 *p++ 导致首先取消引用指针然后递增它指向的地址?
*p++
解析为 *(p++)
.
p++
的值是p
(副作用是递增的p
),所以*p++
的值与[=17的值相同=].
除了副作用,*p
和 *p++
完全相同。
整数也会发生完全相同的事情:
int n = 6;
printf("%d\n", 7 * n);
printf("%d\n", 7 * n++); // except for the side-effect same value as above