【独学C言語入門㉕】多次元配列

多次元配列とは今までの配列が1列に並べて値を管理していたと例えると2次元では縦・横の2方向、3次元では縦・横・高さの3方向に値を並べて管理する方法です。

型 配列名[要素数];

//1次元
//インデックス0,  1,  2
int a[3] = {10, 11, 12]

//2次元
int a[要素数][要素数] = {
    {a, b, c・・・},
    {d, e, f・・・}
};

//3次元
int a[要素数][要素数][要素数] = {
    {a, b, c・・・},
    {d, e, f・・・},
    {g, h, k・・・}
};

//右が切れたら左にスワイプしてください

2次元を表でご説明します。以下の値を代入するとします。

  0 1 2
0 10 11 12
1 20 21 22
//型 配列名[要素数][要素数]

int a[2][3] = {
    {10, 11, 12},
    {20, 21, 22}
};

//インデックスは0から始まるため
//a[1][2]まで格納される

//a[0][0] = 10;
//a[0][1] = 11;
//a[0][2] = 12;
//a[1][0] = 20;
//a[1][1] = 21;
//a[1][2] = 22;

変数の宣言時はa[2][3]としていますがインデックスで取り出す最大はa[1][2]までになります。これは宣言時は「要素数」を[]の中に記述して、実際に呼び出すインデックスは0から始まるためです。

実際に動作させてみます。

#include <stdio.h>

main()
{
   //2次元
   int a[2][3] = {
      {10, 11, 12},
      {20, 21, 22}
   };

   int i, j;
    
   printf("1つずつ取り出す\n");
   printf("a[0][0]=%d\n", a[0][0]);
   printf("a[1][2]=%d\n", a[1][2]);
    
   printf("for文で取り出す\n");

   for (j = 0;j < 2;j++)
   {
      for (i = 0; i < 3; i++)
      {
         printf("a[%d][%d]=%d\n", j, i, a[j][i]);
      }
   }
}
//右が切れたら左にスワイプしてください

ちょっと複雑になりますが多次元配列を使用すると効率良くデータを管理できることがありますのでこういう方法もあるとだけ覚えてもらえればと思います。

独学C言語入門一覧に戻る