1. 后缀++ 和 -- 大于 前缀 ++ 和 -- 大于 *
2. 后缀是先使用后加加,后缀是先加加后使用
int arr[] = { 1,4,7,9,10 };
int* p = arr;
printf("原*p的值: %d\n", *p); // 1
/// 后置++的优先级高于*,即 先p++ 后*p 但是后置++ 是先使用后++
/// 所以先使用 p 此时p为首元素地址 解引用p得到 1 赋给 a ,p使用完后++, p为第二个元素地址
int a = *p++;
printf("a = %d, *p = %d\n", a, *p); // 1 4
int arr[] = { 1,4,7,9,10 };
int* p = arr;
printf("原*p的值: %d\n", *p); // 1
/// 和前面一样先 p++ 后 *p 但是后置++ 是先使用后++
int b = *(p++);
printf("b = %d: *p = %d\n", b, *p); // 1 4
int arr[] = { 1,4,7,9,10 };
int* p = arr;
printf("原*p的值: %d\n", *p); // 1
// 括号的优先级高于 后置++,所以先 *p 后++
// 后置++ 是先使用后++,*p 得到值 1 先使用赋给 c 然后++, *p变为 2,则arr[0]也变为2
int c = (*p)++;
printf("c = %d: *p = %d\n", c, *p); // 1 2
int arr[] = { 1,4,7,9,10 };
int* p = arr;
// 前置++的优先级高于*,先++p 后 *p
// 与第一个不同的是 前置++ 是 先++ 后使用
// 所以 p加加后指向arr第二个元素,即p存放第二个元素地址,解引用得到 4 赋给 d
int d = *++p;
printf("d: %d *p = %d\n", d, *p); // 4 4
int arr[] = { 1,4,7,9,10 };
int* p = arr;
int e = ++ * p; // 等价于 ++(*p)
printf("e = %d *p = %d\n", e, *p); // 2 2