【C言語】配列の基本と使いどころ|初心者が最初に覚えるデータ管理方法
今回の記事でわかること
- 配列が何のために存在するのかが分かる
- 配列の基本的な書き方と考え方が理解できる
- for 文と組み合わせた実用的な使い方が分かる
- 配列で起きやすい事故ポイントが分かる
配列とは
プログラムでいう「配列(array)」とは、同じ型のデータをまとめて扱うための仕組み のことです
例えば
テストの点数を 30 人分管理したい場合、変数を 30 個用意するのは大変ですが、配列を使えば一気にまとめて扱えます
int scores[30]; // int型を30個まとめて管理配列は「同じ種類のデータを並べて持つ箱」というイメージを持つと分かりやすいです
配列の基本的な書き方
配列は次の形で宣言します
型名 配列名[要素数]実際の例を見てみます
#include <stdio.h>
int main(void) {
int scores[5] = {70, 80, 90, 60, 85};
printf("1人目の点数: %d\n", scores[0]);
printf("2人目の点数: %d\n", scores[1]);
printf("3人目の点数: %d\n", scores[2]);
return 0;
}出力結果
1人目の点数: 70
2人目の点数: 80
3人目の点数: 90インデックスは 0 から始まる
配列の要素番号(インデックス)は 必ず 0 から始まる ので注意が必要です
- scores[0] が最初
- scores[4] が最後
この 0 始まりは、C言語だけでなく多くの言語で共通の考え方です
配列と繰り返しを組み合わせる
配列の本領は for 文と組み合わせたとき に発揮されます
#include <stdio.h>
int main(void) {
int scores[5] = {70, 80, 90, 60, 85};
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += scores[i];
}
printf("平均点: %d\n", sum / 5);
return 0;
}出力結果
平均点: 77このように
- 配列でデータをまとめる
- ループで一気に処理する
という流れは、実務でも非常によく使われます
配列の初期化いろいろ
配列は宣言と同時にさまざまな形で初期化できます
int nums[5] = {1, 2, 3, 4, 5}; // すべて指定
int zeros[5] = {0}; // 全要素が0
int autoSize[] = {10, 20, 30}; // 要素数は自動で3特に {0} の書き方は、初期化漏れを防ぐためによく使われます
文字列も実は配列
C言語の文字列は char 型の配列 でできています
char str[] = "Hello";
printf("%s\n", str);出力結果
Hello配列を扱う上での注意点
範囲外アクセスは即バグ
scores[5] = 100;このように、要素数を超えてアクセスすると 未定義動作 になります
- 意味不明な値になる
- 他の変数を書き換える
- プログラムが落ちる
など。かなり危険なバグの原因になります
要素数は定数で管理すると安全
#define STUDENTS 5
int scores[STUDENTS];こうしておくと
- 要素数の変更が楽
- コードの意味が分かりやすい
- ミスが減る
というメリットがあります
C言語の配列はサイズが変えられない
C言語の配列は一度サイズを決めたら変更できません
- 自動拡張なし
- 要素の追加不可
この制約があるからこそ、後に学ぶポインタや動的確保が重要になります
配列が便利な場面
- 点数や売上など同じ種類のデータを扱うとき
- ループでまとめて処理したいとき
- 文字列を扱うとき
C言語では配列はほぼすべての処理の土台になります
この記事のまと
配列は同じ型のデータをまとめて扱うための基本機能 です
- インデックスは 0 から始まる
- for 文と組み合わせると一気に便利になる
- 範囲外アクセスは危険
- 要素数は定数で管理すると安全
配列を理解できるようになると次に学ぶ
- 配列と関数
- 配列とポインタ
- 二次元配列
がスムーズにつながっていきます