Code Fix

上級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付きローカル変数が関数呼び出しをまたいで値を保持し続ける

次回その関数が呼ばれたときも、前回の値から処理が続きます。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)