首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言指針運算:*p++ 與 *++p 的優先級與執行順序詳解

     編輯:程式設計綜合問答

問題背景

初學者常見困惑:int a[5]={11,22,33,44,55}; int *p=a; printf("*p++ = %d\n",*p++); printf("*++p = %d\n",*++p); 兩者輸出不同,但運算符優先級均為「自右向左結合」,該如何理解?

核心概念:後綴 ++ 與前綴 ++

  • 後綴 ++(p++):先使用當前值,再將指針指向下一個元素。
  • 前綴 ++(++p):先將指針指向下一個元素,再使用新位置的值。

逐步拆解執行過程

*p++

  1. 當前 p 指向 a[0](值 11)。
  2. *p++ 相當於 *(p++):先取值 11,再 p 指向 a[1]。
  3. 輸出 11。

*++p

  1. 當前 p 指向 a[1](值 22)。
  2. *++p 相當於 *(++p):先 p 指向 a[2],再取值 33。
  3. 輸出 33。

記憶口訣

「後綴先用後加,前綴先加後用」。結合運算符結合方向,實際執行順序由運算符類型決定,而非單純優先級。

總結

理解指針運算關鍵在於區分「取值時刻」與「指針移動時刻」,畫圖模擬內存變化最直觀。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved