auの日記

プログラミング初心者の日記。(auはハンドルネームです)

C言語の初期化とは

auです。
今回はC言語を見ているとよく見かける「初期化」についての考え方について調べました。
構造体やポインタを見ていても初期化という言葉を見たりするので、これを機に理解していこうと思います。

初期化はなぜ必要か

初期化はなぜ必要かは、値を代入しないプログラミングを書けばわかると思います。

#include<stdio.h>

int main(void) {
    int x, y, z; // int型の変数x, y, zの宣言
    printf("xの値: %d yの値: %d zの値: %d\n", x, y, z); // x, y, zの値の表示
    return 0;
}

// 実行結果
xの値: 32767 yの値: 0 zの値: 0

全て0になると予測していましたが、実際はxにはよくわからない数字が入っています。
これはゴミと呼ばれ、どの数字がでるのか定められていないので、そのときの状況によって変わってしまいます。もし、条件分岐(if文)などでこのような数字が出てしまったら予期しない結果が出てしまう恐れがあります。
このようなことを避けるために、値を代入しなくてはならないのです。
そして、この代入こそ「初期化」ということになります。

#include<stdio.h>

int main(void) {
    int x, y, z; // int型の変数x, y, zの宣言
    x = 3; // 初期化
    y = 8; // 初期化
    z = 0; // 初期化
    printf("xの値: %d yの値: %d zの値: %d\n", x, y, z); // x, y, zの値の表示
    return 0;
}

// 実行結果
xの値: 3 yの値: 8 zの値: 0

それぞれの変数に値を代入し、初期化することができました。