C中的靜態變量

如何在C中使用靜態變量

在函數內部,您可以初始化一個靜態變量使用static關鍵詞。

我說“在函數內部”,因為默認情況下全局變量是靜態的,因此無需添加關鍵字。

什麼是靜態變量?如果未指定初始值,則將靜態變量初始化為0,並在函數調用期間保留該值。

考慮以下功能:

int incrementAge() {
  int age = 0;
  age++;
  return age;
}

如果我們打電話incrementAge()一次,我們會得到1作為返回值。如果我們多次調用它,我們總是會得到1,因為age是一個局部變量,它被重新初始化為0在每個單個函數調用上。

如果將函數更改為:

int incrementAge() {
  static int age = 0;
  age++;
  return age;
}

現在,每次調用此函數時,我們將獲得一個遞增的值:

printf("%d\n", incrementAge());
printf("%d\n", incrementAge());
printf("%d\n", incrementAge());

會給我們

1
2
3

We can also omit initializing age to 0 in static int age = 0;, and just write static int age; because static variables are automatically set to 0 when created.

We can also have static arrays. In this case, each single item in the array is initialized to 0:

int incrementAge() {
  static int ages[3];
  ages[0]++;
  return ages[0];
}

Download my free C Handbook


More clang tutorials: