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 
",    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
",    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
",    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

更新於: 2020-01-06

9 千次以上瀏覽量

啟動你的 職業生涯

完成該課程獲取認證

開始
廣告
© . All rights reserved.