如何在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

我們還可以省略在static int age = 0;中將age初始化為0,只需寫成static int age,因為靜態變數在創建時自動設置為0。

我們還可以擁有靜態數組。在這種情況下,數組中的每個單個項都初始化為0:

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