use*_*165 -1 c printf pointers
int a = 5;
int *p = &a;
printf("%d\n\n", ++*p);
printf("%d\n", *p++);
Run Code Online (Sandbox Code Playgroud)
++*p相当于++(*p).但是*p++增加指针,而不是p指向的值.但我无法理解为什么我的代码中的printf语句显示相同的值"6".这背后有什么具体的逻辑吗?
小智 6
当然.当您*p第二次打印时,您已经在第一次调用的行上增加了它(指针指向的值)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!)
Run Code Online (Sandbox Code Playgroud)