答案 0 :(得分:3)
*p++
解析为*(p++)
。
p++
的值为p
(副作用正在增加p
),因此*p++
的值与*p
相同
除了副作用之外,*p
和*p++
都是相同的。
与整数完全相同的事情:
int n = 6;
printf("%d\n", 7 * n);
printf("%d\n", 7 * n++); // except for the side-effect same value as above
答案 1 :(得分:-3)
在p ++中,由于++出现在 之后,因此代表后递增。这意味着,如果要使用p执行某些任务,则将使用值p,并且仅在完成该任务后才递增p。以下示例:
#include<stdio.h>
int main() {
int a, b;
a = 19;
b = 10;
if (a++ == 19) // 19 == 19. Checks out. // -------------------
// now that the line in which a++ appreared has
// finished executing, the post increment comes into play
// and a becomes 20
printf("%d\n", a); // 20 is printed
if (++b == 10) // 11 != 10. Code inside curly braces of if statement
// is not executed
printf("%d\n", b); // nothing is printed
// final output at the console
// 20 is printed
return 0;
}
因此,在您的情况下,首先将指针p
按原样使用并取消引用。只有在该行执行完毕后,++
才会起作用,并增加存储在p
中的地址。