C言語 staticキーワードとは?意味・使い方をわかりやすく解説
C言語では、staticキーワードは2つの異なる意味を表すために使用することができます。
- 関数内でstaticキーワードを使用すると、その変数や関数のスコープが定義されたソースファイル内に制限され、他のファイルからアクセスできない。さらに、static変数は関数呼び出しの終了後に破棄されず、プログラム実行中に常に存在する。
void foo() {
static int counter = 0;
counter++;
printf("%d\n", counter);
}
int main() {
foo(); // 输出1
foo(); // 输出2
return 0;
}
- staticキーワードをグローバル変数の前に置くと、その変数のスコープを制限し、定義されたソースファイル内でのみアクセスできるようにし、他のファイルからはアクセスできなくなります。
// file1.c
static int global_var = 10;
// file2.c
extern int global_var; // 这里会报错,因为global_var的作用域被限制在file1.c内