Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【C言語】多次元配列とは?基本構文・初期化方法・サンプルコードを徹底解説

配列とは

配列(Array)とは、同じ種類の複数のデータを、ひとつの共通の名前でまとめて管理できるようにした仕組みです。関連する項目が連続したメモリ領域に格納され、添字(インデックス)を使って個々の要素へアクセスします。

配列宣言の構文

配列を宣言する際の基本的な構文は以下の通りです。

datatype array_name [size];

「データ型」「配列名」「要素数」の3つを指定して宣言します。

配列の種類

C言語の配列は、次元の数によって大きく次の3種類に分類されます。

  • 1次元配列
  • 2次元配列
  • 多次元配列(3次元以上)

配列の初期化方法

配列の初期化には、主に次の2つの方法があります。

  • コンパイル時初期化: 宣言と同時に初期値を代入する方法
  • 実行時初期化: プログラムの実行中に、ユーザー入力などから値を受け取って代入する方法

多次元配列とは

  • C言語では、3次元やそれ以上の次元を持つ配列を定義することができます。
  • 次元数の正確な上限は、使用するコンパイラによって決まります。

多次元配列の構文

多次元配列を宣言する構文は以下の通りです。

datatype arrayname [size1] [size2] ... [sizen];

例: 3次元配列の場合

int a[3][3][3];

この場合の要素数は、3 × 3 × 3 = 27個 となります。

サンプルプログラム1:3次元配列の全要素を表示

以下は、C言語で多次元配列を扱う基本的なプログラム例です。

#include<stdio.h>
main ( ){
    int a[2][2][2] = {1,2,3,4,5,6,7,8};
    int i,j,k;
    printf("配列の要素:\n");
    for (i=0; i<2; i++){
        for (j=0; j<2; j++){
            for (k=0; k<2; k++){
                printf("%d ", a[i][j][k]);
            }
        }
    }
}

実行結果

配列の要素:
1 2 3 4 5 6 7 8

このプログラムでは、3重のforループを組み合わせることで、a[2][2][2] の計8つの要素すべてに順番にアクセスし、表示しています。

サンプルプログラム2:添字付きで各要素を確認する

次に、どの値がどの位置(添字)に格納されているのかを確認できるプログラムを見てみましょう。

#include<stdio.h>
int main(){
    int tab, row, col;
    int students[3][3][2] = { { {1, 2}, {4, 5}}, { {2, 4}, {3, 5} }, { {7,8},{9,3}}};
    for (tab = 0; tab < 3; tab++){
        for (row = 0; row < 3; row++){
            for (col = 0; col < 2; col++){
                printf("students[%d][%d][%d]= %d\n", tab, row, col,
                students[tab][row][col]);
            }
        }
    }
    return 0;
}

実行結果

students[0][0][0]= 1
students[0][0][1]= 2
students[0][1][0]= 4
students[0][1][1]= 5
students[0][2][0]= 0
students[0][2][1]= 0
students[1][0][0]= 2
students[1][0][1]= 4
students[1][1][0]= 3
students[1][1][1]= 5
students[1][2][0]= 0
students[1][2][1]= 0
students[2][0][0]= 7
students[2][0][1]= 8
students[2][1][0]= 9
students[2][1][1]= 3
students[2][2][0]= 0
students[2][2][1]= 0

実行結果で注目すべきは、students[0][2]、students[1][2]、students[2][2] の部分が「0」になっている点です。これは、初期化リストで値が指定されなかった要素が、自動的に0で初期化されるためです。C言語では、配列の一部だけを初期化すると、残りの要素はすべて0で埋められるというルールがあります。

まとめ

多次元配列は、表形式のデータや3D空間の座標情報など、階層構造をもつデータを扱う際に非常に便利な機能です。ネストしたforループと組み合わせることで、すべての要素に対して効率よくアクセスできるようになります。まずは2次元・3次元の小さな配列から実際にコードを書いて、動きを確かめてみると理解が深まります。

  1. C#の配列(Array)とは?宣言方法と基本的な使い方を解説

    配列(Array)とは、同じ型の要素を固定サイズで連続的に格納できるデータ構造です。複数のデータをまとめて管理したいときに使われますが、より正確には「連続したメモリ領域上に並べて格納された、同じ型の変数の集合」と考えるとイメージしやすくなります。C#における配列の宣言方法C#で配列を宣言するには、以下の構文を使用します。datatype[] arrayName;それぞれの要素の意味は次のとおりです。datatype:配列に格納する要素の型(int、stringなど)を指定します。[ ]:配列のランク(次元数)を指定します。ここで配列の大きさが決まります。arrayName:配列の名前を指定しま

  2. C#のArrayクラスとは?主なプロパティと使い方をわかりやすく解説

    C#のArrayクラスとは Arrayクラスは、C#におけるすべての配列の基底クラス(基本クラス)です。このクラスはSystem名前空間で定義されており、配列を操作するためのさまざまなプロパティやメソッドが用意されています。 通常、C#で配列を作成すると、その配列は暗黙的にこのArrayクラスから派生しているため、Lengthなどの便利な機能をすぐに利用できます。 Arrayクラスの主なプロパティ一覧 以下の表は、Arrayクラスで特によく使用される代表的なプロパティをまとめたものです。 番号 プロパティと説明 1 IsFixedSize 配列が固定サイズであるかどうかを示す値を取得