运算符【*】的优先级高于运算符【++】

++*p

#include <stdio.h>
int main(void)
{
    int a = 1;
    int *p = &a;
    //前置运算
    int b;
    b = ++*p; //相当于 a = a + 1 --> a =2 ,b = 2
    printf("%d\n", b); // 2,此时a = 2
    return 0;
}

(*p)++

#include <stdio.h>
int main(void) {
    int a = 1;
    int *p = &a;
    int b;
    b = (*p)++;
    printf("%d",b); //output: 1
}

从上面可以看到 *p++(*p)++的效果是一样的

(*p++)重点

#include <stdio.h>
int main(void) {
    int a = 1;
    int *p = &a;
    printf("0x%p\n",p); //输出未自增时指针变量p的地址
    //0x000000000061FE10
    int b;
    b = *(p++); //这里因为是后置运算符
    //所以先把*(p)的值赋值给了b
    //但是与此同时,也让p的地址加4
    printf("%d\n",b);// output:1
    printf("0x%p\n",p); //输出指针变量的地址
    //0x000000000061FE14
}