C言語を学び始めると必ず登場するのが「配列」です。
配列は複数のデータをまとめて扱うための基本機能であり、プログラミングの効率を大きく高めます。
しかし、初心者の方にとっては「添字」「初期化」「メモリの仕組み」など、つまずきやすいポイントも多い分野です。
この記事では、学習者が実際に理解し再現できる内容にまとめ、C言語の配列の基礎から実践的な使い方までを、図解イメージとサンプルコード付きで丁寧に解説します。
配列とは何か?基本概念を理解しよう

まずは配列の基本的な考え方を整理しましょう。
配列は「同じ型のデータを連続したメモリ領域にまとめて格納する仕組み」です。
複数の変数を1つずつ宣言する代わりに、効率よく管理できます。
配列のイメージ
例えば、5人分のテストの点数を保存したい場合、通常の変数なら以下のようになります。
int score1;
int score2;
int score3;
int score4;
int score5;
これでは管理が煩雑です。
配列を使うと次のように書けます。
int score[5];
これにより、score[0]からscore[4]までの5つの整数を扱えます。
C言語では添字は0から始まる点が重要です。
配列の宣言と初期化方法

配列を正しく扱うには、宣言方法と初期化方法を理解することが重要です。
ここでは基本形から応用まで解説します。
配列の宣言方法
型名 配列名[要素数];
例:
int numbers[10];
これは整数型の要素を10個持つ配列を作成します。
配列の初期化
int numbers[5] = {10, 20, 30, 40, 50};
要素数を省略することも可能です。
int numbers[] = {1, 2, 3};
この場合、要素数は3になります。
配列とfor文の組み合わせ

配列はループ処理と組み合わせることで真価を発揮します。
特にfor文との相性は非常に良いです。
配列の値を順番に表示する
#include <stdio.h>
int main() {
int score[5] = {80, 75, 90, 60, 85};
int i;
for(i = 0; i < 5; i++) {
printf("%d\n", score[i]);
}
return 0;
}
このコードでは、添字を利用して順番に値を出力しています。

合計値を求める例
#include <stdio.h>
int main() {
int score[5] = {80, 75, 90, 60, 85};
int i;
int sum = 0;
for(i = 0; i < 5; i++) {
sum += score[i];
}
printf("%d\n", sum);
}
このように配列はデータ集計にも活用できます。

配列使用時の注意点

配列は便利ですが、扱いを誤るとバグの原因になります。
特に初心者が注意すべき点を整理します。
範囲外アクセス(オーバーフロー)
例えば、要素数5の配列に対してscore[5]へアクセスするとエラーになります。
C言語では範囲チェックが自動で行われないため、十分注意が必要です。
メモリとの関係
配列は連続したメモリ領域を使用します。
そのため、大きすぎる配列をローカル変数として宣言すると、スタックオーバーフローを起こす可能性があります。
二次元配列の基礎

表形式のデータを扱う場合は二次元配列を使用します。
二次元配列の宣言
int table[3][4];
これは3行4列の整数配列です。
二次元配列のループ処理
#include <stdio.h>
int main() {
int table[3][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
int i, j;
for(i = 0; i < 3; i++) {
for(j = 0; j < 4; j++) {
printf("%d ", table[i][j]);
}
printf("\n");
}
}
ネストされたループで処理します。

実務での配列活用例

配列は単なる学習用機能ではなく、実務でも頻繁に使われます。
データ管理
- 売上データの集計
- センサーデータの保存
- ゲームのスコア管理
アルゴリズム処理
- ソート処理
- 探索処理
- 統計計算
配列を理解することは、C言語の基礎力を高めることに直結します。
まとめ|配列はC言語理解の重要基礎

C言語の配列は、複数データを効率よく扱うための最重要機能です。
宣言方法、初期化、ループ処理、範囲管理を正しく理解することで、安全で効率的なプログラムを書けるようになります。
初心者の方は、まず一次元配列とfor文の組み合わせを確実に習得しましょう。
そこから二次元配列やポインタとの関係へ進むことで、より実践的なプログラミング力が身につきます。
よくある質問(FAQ)

- QC言語の配列はなぜ0から始まるのですか?
- A
C言語では配列の添字はメモリアドレス計算の仕組みに基づいており、最初の要素が基準アドレスとなるため0から始まります。
これにより効率的なポインタ計算が可能になります。
- Q配列の要素数を後から変更できますか?
- A
通常の配列では宣言後に要素数を変更できません。
可変長のデータを扱う場合はmalloc関数などを使用して動的メモリ確保を行います。
- Q配列とポインタの違いは何ですか?
- A
配列は連続したメモリ領域を確保するデータ構造です。
一方、ポインタはメモリアドレスを保持する変数で、配列名は先頭要素のアドレスとして扱われますが、厳密には異なる概念です。

コメント