配列添え字演算子 [ ]

後置式とその後に続く [ ] (大括弧) 内の式が、配列のエレ メントを指定します。大括弧内の式は、添え字 と呼ばれます。 配列の最初のエレメントの添え字はゼロです。

定義により、式 a[b] は、式 *((a) + (b)) と等価 です (また、加算は結合であるので、b[a] とも等価です)。 式 ab の間で、一方は、型 T に対するポインターでなければなりません。 そして他方は、整数型または列挙型をもっていなければなりません。 配列添え字の結果は、左辺値になります。次の例は、このことを示しています。
#include <stdio.h>

int main(void) {
  int a[3] = { 10, 20, 30 };
  printf("a[0] = %d¥n", a[0]);
  printf("a[1] = %d¥n", 1[a]);
  printf("a[2] = %d¥n", *(2 + a));
  return 0;
}
上記の例の出力は、次のとおりです。
a[0] = 10
a[1] = 20
a[2] = 30

C++ のみの始まり クラスの operator[] を多重定義した場合、添え字演算子とポインター演算の間の関係だけでなく、添え字演算子が必要とする式の型に関する上述の制限も適用されません。C++ のみの終わり

各配列の最初のエレメントに、添え字 0 が付けられます。式 contract[35] は、配列 contract の 36 番目のエレメントを参照します。

多次元配列では、最も頻繁に右端添え字を増分することによって (保管場所の昇順で)、 各エレメントを参照できます。

例えば、次のステートメントは、配列 code[4][3][6] の 各エレメントに 100 を与えます。
for (first = 0; first < 4; ++first)
   {
   for (second = 0; second < 3; ++second)
      {
      for (third = 0; third < 6; ++third)
         {
         code[first][second][third] =
         100;
         }
      }
   }
C のみの始まり C99 は、左辺値でない配列に配列添え字を許可します。 次の例は、C99 で有効です。
struct trio{int a[3];};
struct trio f();
foo (int index)
{  
    return f().a[index];
}
C のみの終わり