【6日でできるC言語入門】配列変数

 C言語で大量のデータをまとめて扱いたいときに便利なのが配列変数です。配列を使うことで、同じ型の複数の値をひとつのまとまりとして管理できます。
 たとえば、5人分の点数、12か月分の売上、複数のセンサー値など…個別の変数では手間がかかるケースでも、配列を使えば簡単かつ効率的に処理できます。
ここでは配列変数の使い方やメリット、注意点、活用例まで詳しく解説します。

1.配列変数の基本

1.1. 配列の宣言と利用

配列変数は「型 配列名[要素数];」の形式で宣言します。
添え字(インデックス)は必ず0から始まります。

サンプルプログラム1:3人分の点数を格納・表示

プロジェクト/ファイル名: Lesson31_1/main.c

#include <stdio.h>

int main(void) {
    int score[3]; // 3つの要素を持つ配列
    score[0] = 70;
    score[1] = 80;
    score[2] = 90;
    int i;
    for (i = 0; i < 3; i++) {
        printf("%d人目の点数: %d\n", i+1, score[i]);
    }
    return 0;
}

実行結果

1人目の点数: 70
2人目の点数: 80
3人目の点数: 90
記述例意味
int score[3];int型3つ分の配列を宣言
score[1] = 80;2番目の値に80を代入
printf("%d", score[2]);3番目の値を表示

1.2. 配列の初期化

配列の宣言時にまとめて値を入れることもできます。

double prices[] = {120.5, 80.0, 65.5}; // 要素数は自動決定

2.配列の応用

2.1. 配列とfor文の組み合わせ

配列はfor文と組み合わせると、すべての要素にまとめて処理を行えます。

サンプルプログラム2:合計と平均の計算

プロジェクト/ファイル名: Lesson31_2/main.c

#include <stdio.h>

int main(void) {
    double data[3] = {2.4, 3.6, 5.0};
    double sum = 0.0;
    int i;
    for (i = 0; i < 3; i++) {
        sum += data[i];
    }
    printf("合計: %.1f\n", sum);
    printf("平均: %.1f\n", sum / 3);
    return 0;
}

実行結果

合計: 11.0
平均: 3.7

2.2. 添え字の範囲と注意点

 配列の添え字は0から「要素数−1」までです。範囲外を参照・代入すると、プログラムが異常終了するなど危険なので要注意です。

宣言有効な添え字
int a[4];0, 1, 2, 3
double x[5];0, 1, 2, 3, 4

3.配列変数の活用例

3.1. 配列のまとめて初期化

プロジェクト/ファイル名: Lesson31_3/main.c

#include <stdio.h>
int main(void) {
    int numbers[4] = {5, 10, 15, 20};
    int i;
    for (i = 0; i < 4; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");
    return 0;
}

実行結果

5 10 15 20

3.2. 添え字を間違えた場合の例(注意喚起)

プロジェクト/ファイル名: Lesson31_4/main.c

#include <stdio.h>
int main(void) {
    int n[2] = {1, 2};
    n[2] = 3; // 範囲外アクセス
    printf("%d\n", n[2]); // 未定義動作
    return 0;
}

 このように範囲外アクセスをすると、エラーや予期しない挙動となります。C言語では添え字のミスに十分注意しましょう。

実行結果

重大度レベル	コード	説明	プロジェクト	ファイル	行	抑制状態	詳細
警告	C6201	インデックス '2' は、有効なインデックスの範囲 '0' から '1' (スタックが割り当てられた可能性のあるバッファー 'n') を超えています。	Lesson31_4	C:\Users\joeac\source\repos\Lesson31_4\Lesson31_4\main.c	4
警告	C6386	'n' への書き込み中にバッファー オーバーランが発生しました: 書き込み可能なサイズは '8' バイトですが、'12' バイトを書き込む可能性があります。	Lesson31_4	C:\Users\joeac\source\repos\Lesson31_4\Lesson31_4\main.c	4		
警告	C6385	'n' から無効なデータを読み取っています: 読み取り可能なサイズは '8' バイトですが、'12' バイトを読み取る可能性があります。	Lesson31_4	C:\Users\joeac\source\repos\Lesson31_4\Lesson31_4\main.c	5
警告	C6201	インデックス '2' は、有効なインデックスの範囲 '0' から '1' (スタックが割り当てられた可能性のあるバッファー 'n') を超えています。	Lesson31_4	C:\Users\joeac\source\repos\Lesson31_4\Lesson31_4\main.c	5	
エラー	C4789	関数 'main' で バッファー 'n' (サイズが 8 バイト) はオーバーランされます; 4 バイトがオフセット 8 から書き込まれます	Lesson31_4	C:\Users\joeac\source\repos\Lesson31_4\Lesson31_4\main.c	4		

まとめ

  • 配列変数は複数データの一括管理に便利
  • 添え字は0から開始し、範囲外に注意
  • 宣言・初期化・for文との組み合わせで処理効率アップ

配列を使いこなせば、C言語のプログラムは格段に効率的・柔軟になります。