C語言—static靜態關鍵字

static解釋及使用

首先static是一個關鍵字
使用static初始化的變量存放於數據區

對於局部變量

void fun()
{
	static int x=0;
	static int x=val;
}

上面的程序是無法編譯通過的,錯誤是變量重定義,因爲靜態變量只初始化一次。需要重點了解的是所謂的初始化並不僅僅指的是賦值,更重要的是爲變量開闢空間。而對於靜態變量來說,他的初始化只進行一次,但是可以進行多次賦值操作。所以上面的函數中出現了錯誤。在編譯時就會出現錯誤。
同時需要注意的是。

void fun()
{
	static int x=0;
}

上面的這個局部靜態變量的可見性只有這一個函數的範圍,但是靜態變量的生存期是整個程序到執行完畢爲止。這點類似全局變量,只不過可見性範圍減小。

對於全局變量
static對於全局變量來說就相對好容易理解,它相當於給全局變量加了一些限制。如:它只能初始化一次,但是其生存期和可見性是和全局變量一樣的。並且當你想在同一個項目另一個文件中使用全局變量時可以使用extern關鍵字。但是對於靜態全局變量來說這樣的操作是不能成功的。
在兩個文件中,如果出現同名的靜態變量,那麼系統會爲其開闢兩個內存空間,他們兩個沒有交集。

ps:如果想了解有關可見性和生存期的問題可以訪問可見性和生存期

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章