#include <stdio.h>
void f(int* p)
{
*p = 5;
}
int main(void)
{
int x = 10, * px = &x;
f(px);
printf("%d#", (*px)++);
printf("%d\n", x);
return 0;
}
这个i++和++i是不一样的
i++是先使用i当前值进行处理,然后i再加上1,所以你这代码执行顺序是先输出*px的值,然后这个值才加1
++i是先进行i加1,然后再用i的值进行处理。所以你这个代码改成++( * px),就会输出6了
(*px)++,加加在后是先赋值(打印),再加一,等价于:
printf("%d#", (*px)++);
等价于
printf("%d#", (*px));
(*px)++;