C語言的靜態變量

c語言中有一個關鍵字是static,用static修飾的變量就是靜態變量,靜態變量存在靜態存儲區中。

static可修飾全局變量和局部變量。全局變量是函數外定義的變量,局部變量是函數內定義的變量。

全局變量前加static修飾主要是為了強調該變量的作用域只在本文件,不允許其他文件引用。

局部變量前加static是為了強調這個變量在main函數執行完之前不會被釋放,如果main函數沒執行完,即使定義這個變量的函數執行完了,這個變量也不會釋放,而是把變量值保持到下一次引用它時。靜態變量只初始化一次,即使再次遇到初始化語句也不會執行,而是自動跳過。舉個例子,函數fun實現是這樣的:void fun() {static int a = 0; a = a + 1;},很明顯,該函數的功能是把a值加1。main函數中調用了兩次該函數: void main(){fun(); fun();},第一次調用後,a的值是1,第二次調用時,會跳過初始化語句static int

a = 0,直接執行a = a + 1;,而且這次執行前a的值保持著上次的值,也就是1,所以這次執後a的值是2。

C語言的靜態變量



分享到:


相關文章: