* p ++和++ * p之间的区别

int a = 5; int *p = &a; printf("%d\n\n", ++*p); printf("%d\n", *p++); 

++*p相当于++(*p) 。 但*p++增加指针,而不是*p++指向的值。 但我无法理解为什么我的代码中的printf语句显示相同的值“6”。 这背后有什么具体的逻辑吗?

当然。 当您第二次打印*p时,您已经在第一次调用printf()的行上增加了它(指针指向的值printf()

 int a = 5; int *p = &a; // p = &a, *p = 5 printf("%d\n\n", ++*p); // p = &a, *p = 6 printf("%d\n", *p++); // p = &a + 1, *(p - 1) = a = 6 (still!)