在 C 語言中,宣告 int (*p)[4]; 時,p 是一個指向「包含 4 個整數的陣列」的指標。這與 int *p[4];(指標陣列)截然不同。
p 的型別是 int (*)[4],即「指向 int[4] 的指標」。*p 代表該陣列本身,型別為 int[4],在大多數情境下會退化為指向首元素的指標 int*。*(*(p+i)+j) 等價於 p[i][j],存取第 i 個陣列的第 j 個元素。假設有 int arr[3][4];,則 p = arr; 使 p 指向第一個子陣列。p+1 會跨過 4 個 int 的大小,指向第二個子陣列。
初學者常混淆「指標陣列」與「陣列指標」。前者是陣列,每個元素是指標;後者是單一指標,指向一個陣列。理解這點對於多維陣列操作至關重要。