多維度陣列 (C)
註標運算式也可以多個的註標,如下所示:
expression1 [expression2] [expression3]...
註標運算式關聯從左到右。 最左邊的註標運算式中, expression1表示,會先評估。 新增位址 expression1 和表示形成指標運算式。 然後 expression3 會新增到最後一個註標運算式加入之前,以此類推形成新的指標運算式中,這個指標運算式。 間接取值運算子 (*) 之後,會套用在評估的最後一次下標的運算式時,除非該工期為陣列的最後的指標值位址輸入 (請參閱以下範例)。
使用多個註標運算式參考元素的 「 多維度陣列 」。 多維陣列會是其元素也是陣列的陣列。 例如,一個三維陣列的第一個元素是具有兩個維度的陣列。
範例
如下列範例中,陣列名為prop以三個項目,每一個都是 4-6 個陣列宣告的int的值。
int prop[3][4][6];
int i, *ip, (*ipp)[6];
參考prop陣列看起來像這樣:
i = prop[0][0][1];
上述範例顯示如何參考第二個個別int中的項目prop。 依資料列,儲存陣列的最後一個註標最快速 ; 而異, 運算式prop[0][0][2]參考下一步] (第三個) 項目是陣列,依此類推。
i = prop[2][1][3];
此陳述式只是更複雜的個別項目參照prop。 運算式的評估方式如下:
第一個註標中, 2,乘以大小的 6 4 int陣列,並加入至指標值prop。 結果會指向第三個 4 依 6 陣列的prop。
第二個的註標, 1,乘以 6 項目的大小int陣列,並加入至所表示的位址prop[2]。
6 個元素陣列的每個元素是int值,最終的註標, 3,乘以大小的int就會新增到之前prop[2][1]。 產生的指標位址 6 個元素陣列的第四個項目。
間接取值運算子套用至指標值。 結果是int位於該位址的項目。
接下來的兩個範例顯示種間接取值運算子無法套用的位置。
ip = prop[2][1];
ipp = prop[2];
這些陳述式運算式的第一次prop[2][1]是有效的參考,給三維陣列prop。 它指的是 6 元素的陣列 (宣告上方)。 因為指標值可以解決一個陣列,間接取值運算子不會套用。
同樣地,運算式的結果prop[2]的第二個陳述式中ipp = prop[2];是定址的二維陣列的指標值。