#include <stdio.h>

void Hoge()
{
	static int init = 0;
	static int hoge;
	int huge;

	if (init == 0) {
		hoge = 1;	// 静的変数はプログラム開始から終了まで領域を確保し続ける
		huge = 2;	// 自動変数はスコープ内（この場合は関数内）のみ領域を確保
		init = 1;	// この関数が2度目以降に呼ばれたときhogeは1のままだがhugeは不定
	}
	printf("Hoge:hoge 静的変数 %#p %d\n", &hoge, hoge);
	printf("Hoge:huge 自動変数 %#p %d\n", &huge, huge);
}

void Hage()
{
	static int init = 0;
	static int hoge;
	int huge;

	if (init == 0) {
		hoge = 11;
		huge = 12;
		init = 1;
	}
	printf("Hage:hoge 静的変数 %#p %d\n", &hoge, hoge);
	printf("Hage:huge 自動変数 %#p %d\n", &huge, huge);
}

int main()
{
	Hoge();
	Hage();
	Hoge();
	return 0;
}
