C中的++ * p,* p ++和* ++ p之间的区别

指针式

在C语言中,* p表示存储在指针中的值。++是前缀和后缀表达式中使用的增量运算符。*是取消引用运算符。前缀++和*的优先级相同,并且两者从右到左关联。后缀++的优先级高于前缀++和*,并且从左到右具有关联性。请参见以下示例,以了解++ * p,* p ++和* ++ p之间的区别。

范例(C)

#include <stdio.h>
int main() {
   int arr[] = {20, 30, 40};
   int *p = arr;
   int q;
   //value of p (20) incremented by 1
   //and returned
   q = ++*p;
   printf("arr[0] = %d, arr[1] = %d, *p = %d, q = %d \n",
   arr[0], arr[1], *p, q);
   //value of p (20) is returned
   //pointer incremented by 1
   q = *p++;
   printf("arr[0] = %d, arr[1] = %d, *p = %d, q = %d \n",
   arr[0], arr[1], *p, q);
   //pointer incremented by 1
   //value returned
   q = *++p;
   printf("arr[0] = %d, arr[1] = %d, *p = %d, q = %d \n",
   arr[0], arr[1], *p, q);
   return 0;
}

输出结果

arr[0] = 21, arr[1] = 30, *p = 21, q = 21
arr[0] = 21, arr[1] = 30, *p = 30, q = 21
arr[0] = 21, arr[1] = 30, *p = 40, q = 40