如何在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];
}