static關鍵字

static作爲C語言中的關鍵字,其引入之初是爲了解決局部變量在函數結束之後其值仍然可以得到保存的問題。隨後在C語言的拓展中,又增加了一個功能,修飾函數或變量的可見性爲本文件。由此我們可以知道,static關鍵字在C語言中有兩個作用:一,修改變量;二,修飾函數。


一:static修飾變量

變量分爲局部變量(函數體內定義的變量)和全局變量(函數體外定義的變量),不管其修飾的是局部變量還是全局變量,爲變量分配的內存空間都在靜態區。

(1)靜態全局變量:

作用於僅限於變量被定義的文件中,其他文件即使使用了extern聲明也無法使用這個變量。從變量定義開始,到文件結尾這部分代碼可以使用這個靜態全局變量。變量定義之前的代碼或者其他文件中的代碼無法訪問這個變量。

(2)靜態局部變量:

由於局部變量的作用域本身就被限定在了函數體內,所以不存在是否在其他文件中使用的爭論,這裏的static修飾,使得局部變量具有了全局變量的一些屬性。在函數第一次被執行時,靜態局部變量就被初始化,在函數執行完畢之後,這個靜態局部變量並不會被銷燬,而是繼續在內存中存在。在以後的函數執行中,這個變量的初始化語句不會被再次執行,但其賦值語句會每次都會被執行,函數執行完畢之後,變量的值就在內存中更新並不會銷燬。


二:static修飾函數

使得函數的訪問屬性變爲只能在本文件中訪問。由於C語言有着比較悠久的歷史,在發展過程中,不想增加其他的關鍵字,所以使用了static這個關鍵字來賦予這個新的語法特性和含義。

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