整数の配列など

角かっこ () の式 [入力] に続く後置式は配列オブジェクトの要素の subscripted 表現です。添字の式は表現と 後置 ように を超える 式の 位置にあるアドレスにある値を表します。

postfix-expression [ expression ]

通常 後置式 で表される値はポインター値配列識別子のようなされ が整数値です。ただし構文上必要なのはポインター型の式が文字で他方が整数型です。したがって整数値は 後置式の 位置にありポインター値は または 「添字の角に」位置指定できます。たとえば次のコードがあります :

// one_dimensional_arrays.c
int sum, *ptr, a[10];
int main() {
   ptr = a;
   sum = 4[ptr];
}

添字の式では配列要素を示すために使用されます。各ポインターに添字を適用できます。値の順序 式が [入力] 角かっこ () で囲む必要がある内容が。

添字の式は結果に間接演算子 ()* を適用するポインター値に整数値を追加することによって評価されます。間接演算子の詳細についてはアドレス演算子を間接 を参照してください)。実際には次元配列の場合次の 4 種類の式は a がポインターでありb が整数であると仮定すると同等です :

a[b]
*(a + b)
*(b + a)
b[a]

加算演算子の変換規則に従って 加法演算子() で指定された値は整数アドレスのオフセットへのポインター アドレスで型の長さで増やすことによって変換されます。

たとえば line 識別子が int 値の配列を示すとします。次の手順で line[i] 添字式を評価するために使用されています :

  1. 整数値 i は int 項目の長さとして定義されるバイト数だけ増やします。i の変換後の値が i int の位置を表します。

  2. この変換後の値が元の値 line ポインター () に line からのオフセット i  の int の場所にあるアドレスを定義するために追加されます。

  3. 間接演算子は新しいアドレスに適用されます。結果はその場所 (直感的にline [i]) に配列要素の値です。

line によって表されるアドレスからのオフセットが 0 であるため式 line[0] 添字を行の最初の要素の値を表します。同様にline[5] のような式は行から要素のオフセット 5 の位置または配列の 6 番目の要素を示しています。

参照

関連項目

添字演算子: []