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++でもそのまま利用できます。
-
【初心者向け】C/C++における多次元配列の初期化方法をわかりやすく解説
多次元配列とは、次元数が2以上ある配列のことです。本記事では、3×3×3の多次元配列におけるメモリ割り当ての仕組みと、実際に配列を初期化して内容を表示するC++プログラムを紹介します。下図は、次元が3×3×3の多次元配列に対するメモリ割り当ての戦略を示したものです。アルゴリズム多次元配列を初期化するプログラムは、以下の手順で構成されます。Begin 多次元配列の要素を初期化する 配列のサイズを出力する 配列の内容を表示する Endサンプルコード以下は、2行2列の二次元配列を初期化し、そのサイズと内容を出力するC++プログラムです。#include<iostream
-
C#でジャグ配列を定義する方法|宣言・初期化・要素アクセスの基本
ジャグ配列(Jagged Array)とはジャグ配列とは、簡単に言えば「配列の配列」のことです。通常の二次元配列と異なり、各行の要素数を個別に設定できるため、柔軟なデータ構造を実現できるのが大きな特徴です。C#でint型のジャグ配列「points」を定義するには、次のように宣言します。int [][] points;ジャグ配列の初期化方法宣言したジャグ配列は、作成時に各要素となる配列を同時に初期化できます。以下のように、波括弧の中にさらに配列を記述していきます。int[][] points = new int[][]{new int[]{10,5},new int[]{30,40}, new