>>301
関数の中で使われるstatic変数の実体は、
ほとんどグローバル変数と思ってよい。
下記2つはほぼ実体は同じ。
1.
int a =0;
void func() { a++; }
2.
void func() { static int a=0; a++; }
2の方は関数内でしか使えないってだけ。
初期化のタイミングはmain関数が呼ばれる前。
func関数が呼ばれるタイミングでは初期化は実行されない。
staticには色んな意味があるので、それ以外は自身で調べて欲しい。