C言語の変数は、変数宣言をするときに、その変数の初期値を設定することができます。

変数を宣言した時点では、その変数の値は保証されていません。

プログラミング言語によっては、変数の初期値が “0” と定まっている場合があることから、C言語でも変数を宣言した時点で初期値が “0” だと思い込んでプログラミングをしてしまいますと、大変なことになってしまいます。

次の「※プログラム1」を実行してみましょう。

※プログラム1

#include <stdio.h>
main(){
            int x;
            x = 1 + 1;
            printf("x = %d\n", x);
}

 

変数 x の値は、”2″ になりますね。

では、次の※プログラム2を実行したら、変数x の値はいくつになるでしょうか。

※プログラム2

#include <stdio.h>
main() {
             int x, y;
             x = y + 1;
             printf("x = %d\n", x); }

 

変数y の初期値が定まっていないため、変数x の値はプログラムを実行してみないと分かりません。

使用するコンパイラーによっては、警告エラーを発してくれたり、デフォルトでゼロを設定してくれたりする場合もありますが、コンパイラーに頼らず、自分で明示的に変数の初期値を設定する癖をつけることを、推奨いたします。

コンパイラーにばかり頼っていますと、いつまでたってもプログラミング・スキルが向上しないからです。

変数を初期化する

さて、変数を初期化することは、とても簡単にできます。

変数を宣言するときに `=` で初期化したい値を書くだけで終わりです。

以下に変数を初期化する記述例を挙げます。

              int a = 1;
              double b = 3.14;
              char c = 'A';

 

先ほどの「※プログラム2」に、変数の初期化処理を追記したものが、「※プログラム3」です。

※プログラム2

#include <stdio.h>
main() {
             int x, y = 0;
             x = y + 1;
             printf("x = %d\n", x);
}

 

※プログラム2の実行結果

x = 1

 

配列を初期化する

配列を初期化する場合も、変数の初期化と同様に `=` で設定したい値を書くだけなのですが、少しだけ工夫が必要です。

例えば以下の、

int d[5];

 

int型配列変数d を初期化したい場合は、

int d[5] = {0, 0, 0, 0, 0};

 

のように、`{` と `}` で初期値リストを記述する必要があります。

このとき、配列の要素数を省略することができます。

例えば、配列変数e の各要素を、それぞれ、1、2、3、4、5 で初期化したい場合は、

int e[] = {1, 2, 3, 4, 5};

 

と記述できるのです。

初期値として記述した要素数が、自動的に配列要素数になります。

文字列(文字配列)を初期化する

char型の文字配列も、通常の配列変数と同じように初期化することができます。

例えば、文字配列f を “Windows” という文字列で初期化したいときは、

char f[8] = {'W', 'i', 'n', 'd', 'o', 'w', 's', '\0'}

 

です。

でも、一文字ずつ記述するのは、少し面倒に感じませんか。

次の例のとおり、もっと手軽に初期化することもできます。

char g[8] = "Windows";

 

通常の配列変数と同じで、配列要素数も省略することが可能です。

char h[] = "Windows";

 

上記の配列変数f, g, h は、すべて”Windows”という文字列で初期化されました。

文字列を初期化するときに忘れないよう気を付けて頂きたいことは、文字列は、0(NULL文字と言います。)を使って文字列の終端を表すことが必要、と言うことです。
(参考:【C言語超入門(第15回)】配列の表現方法と文字列表現方法を学ぼう)

配列要素数を省略した場合は、コンパイラーが自動的にNULL文字を考慮した配列サイズを確保します。

C言語超入門の第16回まとめ

 

さて、今回のC言語超入門では、変数と配列、文字列(文字配列)の初期化について学びました。

最期に、ポイントを整理しておきます。

1.変数を宣言した時点では、変数の値は保証されていないため、変数の初期化をしてから使用することが好ましい。

2.変数の初期化は、変数宣言のときに `=` を使って初期値を設定する

 例)

int a = 10;

 

3.配列の初期化は、`{` と `}` で初期値一覧を記述する

 例)

int a[5] = {1, 2, 3, 4, 5};
        int b[] = {1, 2, 3, 4, 5};

 

4.文字列の初期化は、` ” ` で文字列をくくって記述する

 例)

char c[8] = "Windows";
   char d[] = "Windows";

 

変数の初期化については以上となります。

変数の初期化をすることは、難しくないと思います。

ぜひ変数の初期化を使いこなせるよう、いろいろとテスト・プログラムを書いて自分なりに試してみてくださいませ。

ステップ・バイ・ステップ。焦らず一歩ずつ進んでいきましょう。