上級 › static付きローカル変数が関数呼び出しをまたいで値を保持し続ける › パターン3
static付きローカル変数が関数呼び出しをまたいで値を保持し続ける
関数内でstaticを付けて宣言した変数は、関数を抜けても値が消えません。
1 #include <stdio.h> 2 3 int total(void) { 4 ______ int sum = 0; ^ 5 sum += 3; 6 return sum; 7 } 8 9 int main(void) { 10 printf("%d\n", total()); 11 printf("%d\n", total()); 12 printf("%d\n", total()); 13 return 0; 14 }
出力: 3
3
3期待: 3
6
9
空欄を埋めてコンパイル・実行を通す
普通のローカル変数だと思い込んでいると、カウンタや合計値が意図せず積み上がらない原因になります。
次の問題