多次元配列 (c)

添字の式は次のように複数の添字が存在している可能性があります :

expression1 [expression2] [expression3]...

添字の式は左から右に関連付けます。左端の添字式expression1**[**expression2 入力] は最初に評価されます。expression1expression2 の 追加によって生成されたアドレスはポインター式を形成します ; expression3 は このポインター式の最後の添字式が追加されるまでは新しいポインター式を形成するためにが追加されます。最終的なポインターの値が配列型 (アドレス subscripted 最後の式を評価した後 * 間接演算子 ()次の例を参照して適用されます)。

複数の添字の式は「多次元配列の要素を」多次元配列とはその要素も配列である配列です。たとえば次元配列の最初の要素は 2 次元の配列です。

次の例ではprop という名前の配列はそれぞれが配列 int の 4 × 6 評価する型を持つ 3 個の要素で宣言されます。

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

prop の配列への参照は次のようになります。:

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

上の例 prop のユーザーの int の 2 番目の要素を参照する方法を示します。配列は行の上に格納されるため最後の添字が最も近い ; 異なります。式 prop[0][0][2] は配列の 3 番目の要素 () などが示されています。

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

このステートメントは prop の個々の要素により複雑な参照です。式の評価は次のよう :

  1. 最初のインデックス 2int の配列は4 × 6 のサイズによって乗算ポインター値 prop に追加されます。prop 配列の 4 × 6 三番目の結果へのポインター。

  2. 2 番目の添字は 61 要素の int のサイズによって乗算prop[2] によって表されるアドレスに追加されます。

  3. 6 要素の配列の各要素は int の値です。したがってが prop[2][1] に追加される前に最後の添字は3int のサイズによって大きくなります。結果のポインターを 6 要素の配列の 4 番目の要素を指定する。

  4. 間接演算子はポインター値に適用されます。結果はアドレスに int の要素です。

間接演算子が適用されないこれらの次の 2 つがケースの例に示します。

ip = prop[2][1];

ipp = prop[2];

これらのステートメントの初めに式は prop[2][1] 次元配列 prop への有効な参照が ; これは6 の要素の配列です (上で宣言された)。ポインターの値が配列に対処するため間接演算子は適用されません。

同様に2 番目のステートメント ipp = prop[2]; の式の結果は prop[2] 次元配列をポインター アドレスの値です。

参照

関連項目

添字演算子: []