首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C 語言指針進階:指向固定長度數組的指針與二維數組遍歷

     編輯:C 語言基礎

數組指針定義

`int (*p)[3];` 宣告 p 為指向「含 3 個 int 的數組」的指針。括號不可少,否則 `int *p[3]` 為指針數組。

算術特性

  • 普通 `int* p`:`p+1` 增加 `sizeof(int)` (2/4 字節)。
  • 數組指針 `int (*p)[3]`:`p+1` 增加 `3*sizeof(int)` (6/12 字節),直接跳過一整行。

二維數組遍歷應用

int a[3][4] = {{1,3,5,7},{9,11,13,15},{17,19,21,23}};
int (*b)[4]; // 指向 4 列的行指針
b = a+1;     // 指向第 1 行
for (i=1; i<=4; b = b[0]+2, ++i) printf("%d ", *b[0]); // 輸出 9 13 17 21
for (i=0; i<2; ++i) {
    b = a+i;           // 指向第 i 行
    printf("%d ", *(b[i]+1)); // 輸出 3 11
}

關鍵理解

  • `b` 指向行,`*b` 即該行數組(退化為 `int*`),`*b+1` 指向行內下一元素。
  • `b[i]` 等價 `*(b+i)`,即第 i 行首地址。
  • 利用行指針可清晰表達「按行跳躍」邏輯,避免手算偏移。

總結

指向固定長度數組的指針是處理二維/多維數組的利器,語義明確、步長自動匹配行大小,配合下標運算可寫出既高效又可讀的矩陣操作代碼。

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