c言語におけるstaticの用途

C言語のstaticキーワードが持つ役割を以下に示します。

  1. 関数内の変数にstaticをつけると、その変数が関数内でのみ有効となり、関数実行後も値を保持し、他の関数からは参照できなくなります。
void func() {
static int count = 0;
count++;
printf("count: %d\n", count);
}
int main() {
func(); // 输出: count: 1
func(); // 输出: count: 2
return 0;
}
  1. データの保護: Cファイル内でstatic修飾子をグローバル変数で使用すると、そのスコープを現在のファイル内部のみに制限でき、他のファイルからはその変数にアクセスできなくなります。
// file1.c
static int count = 0;
// file2.c
extern int count; // 编译错误,无法访问file1.c中的count变量
  1. 内部関数として利用可能、ファイル内のみで利用でき、ファイル外から呼び出すことができない
// file1.c
static void func() {
printf("Hello, World!\n");
}
// file2.c
extern void func(); // 编译错误,无法调用file1.c中的func函数
  1. static 修飾子を使用して静的変数を使用すると、値がプログラム実行中に変更されず、それ以外の関数からアクセスできない、永続性があります。
int func() {
static int count = 0;
count++;
return count;
}
int main() {
printf("%d\n", func()); // 输出: 1
printf("%d\n", func()); // 输出: 2
return 0;
}
bannerAds