
C言語入門|配列の初期化:基本ルールと便利な初期化方法
C言語でプログラムを書いていると、必ずといっていいほど登場するのが「配列」です。
配列はとても便利な仕組みですが、初期化を忘れると一気にトラブルの原因になります。
「変数は使う前に初期化する」
これはC言語の大原則ですが、実は配列もまったく同じです。
この記事では、
- なぜ配列の初期化が必要なのか
- 初期化しなかった場合に何が起こるのか
- 配列を安全・スマートに初期化する方法
を、順を追ってやさしく解説していきます。

なぜ配列の初期化が必要なの?
まず大切なポイントから確認しましょう。
C言語では、変数や配列を宣言しただけでは、中にどんな値が入っているか保証されません。
そのメモリ領域に以前使われていた「ゴミの値」が、そのまま残っていることもあります。
これは配列でも同じです。
初期化していない変数・配列を使うとどうなる?
次のサンプルプログラムを見てみましょう。
プロジェクト名:7-3-1 ソースファイル名: sample7-3-1.c
#include <stdio.h>
int main(void)
{
int score;
printf("scoreの中身: %d\n", score);
int points[3];
printf("points[0]の中身: %d\n", points[0]);
return 0;
}実行結果の一例は、次のようになります。
scoreの中身: -125987432
points[0]の中身: 0えっ? 0が出てるから大丈夫?
ここで注意です。
points[0] が 0 になっているのは たまたま です。
| 項目 | 説明 |
|---|---|
| score | 完全に不定な値(毎回変わる可能性あり) |
| points[0] | 今回は0だが、保証は一切ない。 |
つまり、
初期化していない変数・配列の値は信用してはいけません。
このようなコードは、動いたとしても非常に危険です。
配列を1つずつ初期化する方法
では、配列を安全に使うにはどうすればよいのでしょうか。
一番素直な方法は、すべての要素に値を代入することです。
int points[3];
points[0] = 0;
points[1] = 0;
points[2] = 0;これは確実ですが、ちょっと面倒ですよね。
連鎖代入でまとめて初期化する
C言語では、次のように連鎖代入を書くことができます。
int points[3];
points[0] = points[1] = points[2] = 0;何が起きているの?
このコードは、右から左へ次の順で評価されます。
- points[2] に 0 を代入
- その結果(0)を points[1] に代入
- さらにその結果(0)を points[0] に代入
「おおっ、そんな書き方できるんだ!」と思いますよね。
確かに便利ですが、要素数が増えると一気に書くのが大変になります。
宣言と同時に初期化するのが基本
そこで登場するのが、配列の宣言と同時に初期化する方法です。
これが最もおすすめで、実務でもよく使われます。
配列の宣言と初期化の書式
要素の型 配列名[要素数] = { 初期値0, 初期値1, ... };具体例
int points[3] = {0, 0, 0};この時点で、配列のすべての要素が確実に初期化されます。
とても安心ですね。
要素数を省略できる便利な書き方
実は、配列の宣言時には 要素数を省略することも可能 です。
int points[] = {0, 0, 0};この場合、
| 内容 | 説明 |
|---|---|
| 要素数 | 初期値の個数(この例では3) |
| 配列のサイズ | 自動的に決まる。 |
「数え間違い」が起きにくいので、こちらを好んで使う人も多いです。
初期値が足りない場合はどうなる?
次のようなコードはどうなるでしょうか?
int points[5] = {10, 20, 30};実は、これはまったく問題ありません。
| 添え字 | 中に入る値 |
|---|---|
| points[0] | 10 |
| points[1] | 20 |
| points[2] | 30 |
| points[3] | 0 |
| points[4] | 0 |
指定されなかった要素は、自動的に0で初期化される
というルールがあるためです。
全要素を0で初期化する最強の書き方
このルールを応用すると、さらにシンプルな書き方ができます。
int points[5] = {0};この1行で、すべての要素が 0 になります。
さらに、最近のC言語では次の書き方も可能です。
int points[5] = {};どちらも意味は同じで、
- 要素数が多くても
- 変更があっても
とにかく安全でラクな書き方です。
まとめ:配列の初期化は「安全運転」
ここまでの内容を整理すると、次のようになります。
| ポイント | 内容 |
|---|---|
| 初期化しない配列 | 何が入っているかわからない。 |
| 要素ごとの代入 | 確実だが手間がかかる。 |
| 宣言と同時に初期化 | 一番おすすめ |
| {0} や {} | 全要素を0にできて超便利 |
配列は便利ですが、初期化を忘れると一気に危険になります。
ぜひ今回紹介した方法を使って、安心・安全なコードを書いていきましょう。
