C++配列完全ガイド:宣言、初期化、アクセス、実践例
C++ 配列
このチュートリアルでは、C++配列の宣言、初期化、アクセス、操作を実践的なコード例で解説します。
C++において配列は、同じ型の要素を固定サイズで格納する単一の変数です。例えば、27人の学生がいるクラスで成績を管理する場合:
double grade[27];
ここでは grade が最大27個の double 値を保持できます。一度宣言すると、配列のサイズと要素型は変更できません。
C++ 配列の宣言
dataType arrayName[arraySize];
例:
int x[6];
解説:
int– 要素型- x – 配列名
6– 要素数
C++ 配列要素へのアクセス
各配列要素はインデックスで識別され、0から始まります。要素の取得・変更には:
// 配列要素へのアクセス構文
array[index];
上記の配列 x を考えます。

重要ポイント
- インデックスは
0から始まる(例: x[0] が最初の要素) - サイズ
nの配列では、最後のインデックスはn-1(ここでは x[5]) - 配列要素は連続したメモリアドレスに格納される。
x[0]が 2120d から始まるなら、intが4バイトなのでx[1]は 2124d、x[2]は 2128d など
C++ 配列の初期化
配列は宣言時に初期化できます:
// 配列の宣言と初期化
int x[6] = {19, 10, 8, 17, 9, 15};

または、コンパイラにサイズを推測させることもできます:
// 配列の宣言と初期化
int x[] = {19, 10, 8, 17, 9, 15};
提供される要素数が配列サイズより少ない場合、残りの要素はC++ではゼロ初期化されます。

配列要素の挿入と出力
int mark[5] = {19, 10, 8, 17, 9};
// 4番目の要素を9に変更
mark[3] = 9;
// ユーザー入力を受け取り3番目の位置に格納
cin >> mark[2];
// ユーザー入力を受け取りi番目の位置に挿入
cin >> mark[i-1];
// 最初の要素を出力
cout << mark[0];
// i番目の要素を出力
cout >> mark[i-1];
実例 1: 配列要素の表示
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {7, 5, 6, 12, 35};
cout << "The numbers are: ";
// 範囲ベースforループで配列要素を出力
for (const int &n : numbers) {
cout << n << " ";
}
cout << "\nThe numbers are: ";
// 従来のforループで配列要素を出力
for (int i = 0; i < 5; ++i) {
cout << numbers[i] << " ";
}
return 0;
}
出力
The numbers are: 7 5 6 12 35 The numbers are: 7 5 6 12 35
両ループで同じ結果になります。値の読み取りのみなら範囲ベースループが推奨されます。不要なコピーを避けられるためです。
注意: const int &n を使う方が int n より効率的です。参照渡しで偶発的な変更も防げるためです。
実例 2: ユーザー入力を配列に読み込む
#include <iostream>
using namespace std;
int main() {
int numbers[5];
cout << "Enter 5 numbers: " << endl;
// ユーザー入力を配列に格納
for (int i = 0; i < 5; ++i) {
cin >> numbers[i];
}
cout << "The numbers are: ";
// 配列要素を出力
for (int n = 0; n < 5; ++n) {
cout << numbers[n] << " ";
}
return 0;
}
出力
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
実例 3: 配列要素の合計と平均
#include <iostream>
using namespace std;
int main() {
double numbers[] = {7, 5, 6, 12, 35, 27};
double sum = 0;
double count = 0;
double average;
cout << "The numbers are: ";
// 範囲ベースforループで要素を出力し合計を計算
for (const double &n : numbers) {
cout << n << " ";
sum += n;
++count;
}
cout << "\nTheir Sum = " << sum << endl;
average = sum / count;
cout << "Their Average = " << average << endl;
return 0;
}
出力
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
この例は、コンパイル時に配列サイズが不明な場合でも、範囲ベースループが走査を簡素化することを示しています。
C++ 配列の境界外アクセス
サイズ 10 の配列では、有効なインデックスは 0 から 9 です。インデックス 10 以上にアクセスすると未定義動作を引き起こし、クラッシュやデータ破損として現れる可能性があります。
C言語
- C# 配列をマスターする:宣言、初期化、操作
- C# 多次元配列:2次元配列をコード例で徹底解説
- C# ジャグ配列をマスターする:宣言、初期化、アクセス
- C++型変換完全ガイド:暗黙・明示変換とキャスト技法
- C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
- C++コメント完全ガイド:読みやすく保守しやすいコードのためのベストプラクティス
- C++配列を関数に渡す完全ガイド:1次元・多次元配列の実例付き
- C++配列を徹底解説:宣言、初期化、ポインタ活用テクニック
- C++動的配列の確保をマスター:コード例付き実践ガイド
- MATLAB:多次元配列と特殊配列をマスターする
- Java配列コピー技法:包括的ガイド