C言語における静的変数の特性
C 言語の静的変数の特性として、以下のようなものが挙げられます。
- 静的変数は定義した関数の内部にスコープが限定されますが、関数呼び出しが終了した後も存在し続け、値が保持され、次回呼び出したときも使用できます。
- 静的変数のライフタイムは、プログラムの起動からプログラムの終了まで存在し、関数の呼び出しが終わった後も残り続けます。
- 静的変数は、プログラムでの実行中一度のみメモリ空間が確保され、関数呼び出し毎に再び確保されることはありません。
- 静的変数の初期化は1度だけ行われ、その変数を定義した関数に初めてアクセスした際に初期化され、それ以降関数にアクセスしても初期化は行われません。
- 静的変数はデフォルトでは 0 で初期化され、定義時に明示的に初期化を行った場合は、明示的に初期化した値が適用されます。
- staticな変数は同じ名前のローカル変数が定義されていても、関数の外側の他の関数からは参照できないため、衝突が発生しません。
- 同一の静的変数が複数の関数内で定義されている場合、それらは実際には異なる変数であり、独立してそれぞれの値を維持します。