タグ

ブックマーク / oswald.hatenablog.com (1)

  • 静的変数(static変数)の初期化 - ソフトウェアエンジニア現役続行

    C言語では、自動変数は明示的に初期化をしないと、その自動変数の値は未定義です。なので自動変数には明示的に初期化をする必要があります。 一方、静的変数(static変数)は明示的に初期化をしないと、0(数値型)またはNULL(ポインタ型)に初期化されます。 int i; /* 何が入っているか分からない */ static int j; /* 0が入っている */ ただし、単一の変数の宣言だったら、たとえ0で初期化されているとはいえ、 static int j; よりも static int j = 0; と明示的に書いた方が可読性が高くて良いでしょう。 しかし、配列を扱うときなどは、このように明示的に表すのが難しく、初期値を省略するのが一般的です。 例えば以下のように char *p[15]; /* 各要素はNULLで初期化されている */ なぜなら、明示的に表そうとすると、 char *

    静的変数(static変数)の初期化 - ソフトウェアエンジニア現役続行
    kiyo_hiko
    kiyo_hiko 2012/01/29
    自動変数は明示的に記述しないと初期化されず、static変数の場合は暗黙的に0またはNULLに初期化される 覚えとこう
  • 1