共用方式為


多維陣列 (C)

註標運算式也可以擁有多個註標,如下所示:

expression1 [ expression2 ] [ expression3 ] /*...*/ ;

註標運算式的關聯是由左至右。 最左邊的下標表達式 expression1[ expression2 ]會先評估。 新增 expression1expression2 形成指標表示式所產生的位址,然後將 expression3 新增至此指標表示式,以形成新的指標表達式等等,直到加入最後一個下標表達式為止。 間接運算子 (*) 會在評估最後一個下標表達式之後套用,除非最終指標值處理數位類型。

具有多個註標的表達式是指「多維度陣列」的專案。多維度陣列是陣列,其元素為陣列。 例如,三維陣列的第一個元素是具有兩個維度的陣列。

範例

在下列範例中,名為 prop 的陣列中宣告了三個元素,每個元素都是 4x6 的 int 值陣列。

int prop[3][4][6];
int i, *ip, (*ipp)[6];

prop 陣列參考的外觀如下:

i = prop[0][0][1];

此範例示範如何參考 的第prop二個個別int專案。 陣列會依資料列儲存,因此最後一個註標變化的速度更快,而 prop[0][0][2] 運算式會參考陣列的下一個 (第三個) 元素,依此類推。

i = prop[2][1][3];

這個陳述式對於 prop 的個別元素來說是更為複雜的參考。 運算式 的評估方式如下:

  1. 第一個註標 2 會乘以 4x6 int 陣列的大小,並且增加至指標值 prop。 結果會指向 prop 的第三個 4x6 陣列。

  2. 第二個註標 1 會乘以 6 個元素 int 陣列的大小,並且增加至 prop[2] 所代表的位址。

  3. 6 元素陣列的每個元素都是一個 int 值,因此,最後的下標 3會乘以 的大小 int ,再加入至 prop[2][1]。 產生的指標會定址 6 個元素陣列的第四個元素。

  4. 間接運算子會套用至指標值。 結果會是位於該位址的 int 元素。

接下來的兩個範例顯示未套用間接運算符的情況。

ip = prop[2][1];

ipp = prop[2];

在這些語句的第一個語句中,表達式 prop[2][1] 是三維陣列的有效參考;它指的是 6 元素陣列 prop(先前宣告)。 由於指標值會處理陣列,因此不會套用間接運算符。

同樣地,第二個陳述式 prop[2]ipp = prop[2]; 運算式的結果是定址二維陣列的指標值。

另請參閱

註標運算子: