変数を宣言するときに、ついでに初期化することができる。一般的な形式は次の通り。
型 変数名 = 値;
グローバル変数の初期化に使えるのは定数だけ、ローカル変数の初期化には定数、変数、関数呼び出し(戻り値)が使える。
グローバル変数は最初に1回だけ初期化され、ローカル変数は関数が呼び出されるたびに初期化される。
明示的に初期化されないグローバル変数は 0 に設定されるけど、ローカル変数の場合は値が不定になる。
変数をまとめて宣言するとき、初期化する変数としない変数を混ぜることができる。
int min = 0, count, max = 100;
次のプログラムでは、main 関数の中のローカル変数 y をグローバル変数 x で、ローカル変数 z を関数の戻り値で初期化している。
#include int x = 10; /* global */ int myfunc(int i); int main(void) { int y = x; /* initialize with global variable */ int z = myfunc(y); /* initialize with function */ printf("%d %d\n", y, z); return 0; } int myfunc(int i) { return i / 2; }
takatoh@nightschool $ ./sample_4_4 10 5