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

C 指標運算詳解:二維數組指標 p+1、*(p+1)+3 等表達式的地址與值計算

     編輯:程式設計綜合問答

關鍵定義


int arry[3][5] = {{1,2,4},{4,5,6,7},{6,5,3,8}};
int (*p)[5]; // p 指向含 5 個 int 的一維數組
p = arry;    // p 指向 arry 首地址(第 0 行)

表達式逐一解析

表達式類型含義結果
*(p+1)+3int*p+1 指向第 1 行首地址,解引用降維為 int*,+3 偏移 3 個 int → 第 1 行第 3 列地址地址
*(*(p+1)+3)int再解引用取值 → 第 1 行第 3 列的值(7)值
p+1int(*)[5]指向第 1 行首地址地址
*p+1int*第 0 行首地址 +1 → 第 0 行第 1 列地址地址
**pint第 0 行第 0 列值(1)值
&pint(*)[5]*指標變數 p 自身的地址地址

核心規則

  • p 為數組指標,步長 = sizeof(int)*5。
  • * 降低維度:int(*)[5] --*--> int* --*--> int。
  • arry[i][j] == *(*(arry+i)+j) == *(p[i]+j) == *(*(p+i)+j)。

圖解參考原最佳回答附圖。

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