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

C/C++における多次元配列の定義方法を徹底解説

配列とは、同じ型の要素を連続したメモリ領域に格納したデータ構造です。メモリ上では、最も小さいアドレスが先頭の要素に対応し、最も大きいアドレスが末尾の要素に対応します。

配列のインデックスは 0 から始まり、配列サイズ − 1 で終わる点に注意してください。また、配列のサイズは必ず 0 より大きい整数である必要があります。

配列のインデックスとサイズの関係

具体的な例を見てみましょう。

配列サイズ = 10 の場合
先頭のインデックス = 0
末尾のインデックス = 配列サイズ - 1 = 10 - 1 = 9

つまり、サイズ10の配列にアクセスできるインデックスは 0〜9 の合計10個ということになります。

多次元配列とは?

多次元配列とは、いわば「配列の配列」です。データは表形式(行と列)で保持され、メモリ上には行優先(row-major order)と呼ばれる順序で格納されます。2次元配列は行列のように扱えるため、表データやゲーム盤面、画像データなど幅広い場面で活用されます。

C言語における多次元配列の宣言構文

型 配列名[サイズ1][サイズ2].......[サイズN];

各項目の意味は以下の通りです。

  • 配列名 − 配列に付ける任意の名前です。

  • サイズ − 各次元の要素数を示す正の整数値です。

なお、この構文はC++でも同様に使用できます。

多次元配列の初期化方法

宣言と同時に初期化する場合は、波括弧 { } を入れ子にして各次元の要素を記述します。

型 配列名[サイズ1][サイズ2].......[サイズN] = { {要素, 要素, ...}, {要素, 要素, ...}, ... };

内側の波括弧1つぶんが「行」に相当し、その中の要素が「列」に並びます。

C言語での多次元配列のサンプルコード

ここでは、2行3列の2次元配列を宣言・初期化し、すべての要素を表示するプログラムを紹介します。

サンプルコード

#include <stdio.h>

int main () {
    int arr[2][3] = { {5,2,3}, {28,8,30}};
    int i, j;

    for ( i = 0; i < 2; i++ ) {
        for ( j = 0; j < 3; j++ )
            printf("arr[%d][%d] = %d\n", i, j, arr[i][j] );
    }
    return 0;
}

このプログラムでは、外側のループが行(第1添字)、内側のループが列(第2添字)を制御し、arr[i][j] の形式で各要素へ順番にアクセスしています。

実行結果

arr[0][0] = 5
arr[0][1] = 2
arr[0][2] = 3
arr[1][0] = 28
arr[1][1] = 8
arr[1][2] = 30

まとめ

  • 配列のインデックスは 0 から始まり、最大で「サイズ − 1」までです。

  • 多次元配列は配列の配列であり、行優先でメモリに格納されます。

  • 宣言時の [ ] の数が次元数を表し、初期化は入れ子の波括弧で行います。

  • 同じ構文・考え方はC++でもそのまま利用できます。


  1. 【初心者向け】C/C++における多次元配列の初期化方法をわかりやすく解説

    多次元配列とは、次元数が2以上ある配列のことです。本記事では、3×3×3の多次元配列におけるメモリ割り当ての仕組みと、実際に配列を初期化して内容を表示するC++プログラムを紹介します。下図は、次元が3×3×3の多次元配列に対するメモリ割り当ての戦略を示したものです。アルゴリズム多次元配列を初期化するプログラムは、以下の手順で構成されます。Begin 多次元配列の要素を初期化する 配列のサイズを出力する 配列の内容を表示する Endサンプルコード以下は、2行2列の二次元配列を初期化し、そのサイズと内容を出力するC++プログラムです。#include<iostream

  2. C#でジャグ配列を定義する方法|宣言・初期化・要素アクセスの基本

    ジャグ配列(Jagged Array)とはジャグ配列とは、簡単に言えば「配列の配列」のことです。通常の二次元配列と異なり、各行の要素数を個別に設定できるため、柔軟なデータ構造を実現できるのが大きな特徴です。C#でint型のジャグ配列「points」を定義するには、次のように宣言します。int [][] points;ジャグ配列の初期化方法宣言したジャグ配列は、作成時に各要素となる配列を同時に初期化できます。以下のように、波括弧の中にさらに配列を記述していきます。int[][] points = new int[][]{new int[]{10,5},new int[]{30,40}, new