关于指针的问题,运行结果为5#6,为什么不是6#6呢,(*px)的值是5,(*px)++应该是6吧?

#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)++;