#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;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIEhvZ2UoKQp7CglzdGF0aWMgaW50IGluaXQgPSAwOwoJc3RhdGljIGludCBob2dlOwoJaW50IGh1Z2U7CgoJaWYgKGluaXQgPT0gMCkgewoJCWhvZ2UgPSAxOwkvLyDpnZnnmoTlpInmlbDjga/jg5fjg63jgrDjg6njg6Dplovlp4vjgYvjgonntYLkuobjgb7jgafpoJjln5/jgpLnorrkv53jgZfntprjgZHjgosKCQlodWdlID0gMjsJLy8g6Ieq5YuV5aSJ5pWw44Gv44K544Kz44O844OX5YaF77yI44GT44Gu5aC05ZCI44Gv6Zai5pWw5YaF77yJ44Gu44G/6aCY5Z+f44KS56K65L+dCgkJaW5pdCA9IDE7CS8vIOOBk+OBrumWouaVsOOBjDLluqbnm67ku6XpmY3jgavlkbzjgbDjgozjgZ/jgajjgY1ob2dl44GvMeOBruOBvuOBvuOBoOOBjGh1Z2Xjga/kuI3lrpoKCX0KCXByaW50ZigiSG9nZTpob2dlIOmdmeeahOWkieaVsCAlI3AgJWRcbiIsICZob2dlLCBob2dlKTsKCXByaW50ZigiSG9nZTpodWdlIOiHquWLleWkieaVsCAlI3AgJWRcbiIsICZodWdlLCBodWdlKTsKfQoKdm9pZCBIYWdlKCkKewoJc3RhdGljIGludCBpbml0ID0gMDsKCXN0YXRpYyBpbnQgaG9nZTsKCWludCBodWdlOwoKCWlmIChpbml0ID09IDApIHsKCQlob2dlID0gMTE7CgkJaHVnZSA9IDEyOwoJCWluaXQgPSAxOwoJfQoJcHJpbnRmKCJIYWdlOmhvZ2Ug6Z2Z55qE5aSJ5pWwICUjcCAlZFxuIiwgJmhvZ2UsIGhvZ2UpOwoJcHJpbnRmKCJIYWdlOmh1Z2Ug6Ieq5YuV5aSJ5pWwICUjcCAlZFxuIiwgJmh1Z2UsIGh1Z2UpOwp9CgppbnQgbWFpbigpCnsKCUhvZ2UoKTsKCUhhZ2UoKTsKCUhvZ2UoKTsKCXJldHVybiAwOwp9Cg==