上級 › static付きローカル変数が関数呼び出しをまたいで値を保持し続ける › パターン1
static付きローカル変数が関数呼び出しをまたいで値を保持し続ける
関数内でstaticを付けて宣言した変数は、関数を抜けても値が消えません。
1 #include <stdio.h> 2 3 int nextId(void) { 4 ______ int id = 0; ^ 5 id++; 6 return id; 7 } 8 9 int main(void) { 10 printf("%d\n", nextId()); 11 printf("%d\n", nextId()); 12 printf("%d\n", nextId()); 13 return 0; 14 }
出力: 1
1
1期待: 1
2
3
空欄を埋めてコンパイル・実行を通す
staticを付けないと、呼ばれるたびにid=0から初期化されるため常に1が返ります。staticを付けると前回の値が保持され、呼ぶたびに増加していきます。
次の問題