點擊藍字 關注我們
關鍵字static
單從單詞翻譯出來的意思,我們可能都以為關鍵字static是很安靜,但是呢它一點都不安靜!
作用1:修飾變量
修飾變量。變量有分為全局變量和局部變量但是如果他們都被static修飾了的話他們都在内存的靜态區。
靜态全局變量:作用域僅限于本文件中中,如果在其他文件及時使用extern聲明也沒變法使用該變量,換一個說法作用域是從定義的地方開始到文件結尾處結束,在定義之處前面的代碼同樣沒辦法使用它。
靜态局部變量:局部變量就是在函數裡面的static,那就隻能在函數裡面使用了,剛剛我也提到了由于被static修飾的變量都存放在靜态存儲區,所以即使該函數就算結束了該靜态變量也不會被銷毀,如果下次在調用這個函數還是原來的值。
作用2:修飾函數
修飾函數。就是在函數前面添加static使得函數變為靜态函數。但是要和變量區分開來,這裡不是說把函數保存到靜态存儲區,而是說該函數的作用域僅限在本文件内,所以這樣的函數我們有叫(内部函數)。那這樣定義的函數有什麼作用呢?在項目開發過程中往往不是單獨一個人開發,每一個都有自己的模塊,最後綜合在一起,這樣定義函數就避免了你定義的函數在其他地方被其他人使用導緻程序出現問題。
關于static的曆史
通過查找資料我發現C語言的關鍵字還有一段不一樣的曆史,在最開始在C語言中引入關鍵字static是為了表示退出後内存塊依舊保存局部變量,随後出現了第二種定義:用來表示不能被去頭文件訪問的全局變量和函數。
看到這裡你知道C語言關鍵字static的用法了麼?如果有什麼疑問可以評論共同探讨!
在這裡看一道筆試題目:
void fun(void)
{
statict int i=0 ;
i ; }
int mian ()
{
int k=0;
for(k=0;k<10;k )
{ fun();}
return 0;
}
你看完知道最後i的結果是多少麼?
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!