変数を宣言するときに、ついでに初期化することができる。一般的な形式は次の通り。
型 変数名 = 値;
グローバル変数の初期化に使えるのは定数だけ、ローカル変数の初期化には定数、変数、関数呼び出し(戻り値)が使える。
グローバル変数は最初に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