您現在的位置是:首頁 > 旅遊

「C語言」static三大作用,面試高頻題,快做筆記!

由 萬樹IT學院 發表于 旅遊2022-06-22
簡介04總結靜態函式會被自動分配在一個一直使用的儲存區,直到程式結束才從記憶體消失,避免呼叫函式時壓棧出棧,速度快很多其他檔案可以定義相同名字的函式,不會發生衝突靜態函式不能被其它檔案呼叫,作用於僅限於本檔案當我們同時編譯多個檔案時,所有未加s

static的作用是什麼

點選藍字

關注我們

FOLLOW US

static(計算機高階語言關鍵字)

static三大作用:

修飾區域性變數–靜態區域性變數

修飾全域性變數–靜態全域性變數

修飾函式–靜態函式

01

修飾區域性變數–靜態區域性變數

把區域性變數改變為靜態變數後是改變了它的儲存方式即改變了它的生命週期。但不改變他的作用域。

static區域性變數只被初始化一次,下一次依據上一次結果值;

原始碼如下:

1。未經static修飾的區域性變數

「C語言」static三大作用,面試高頻題,快做筆記!

執行結果:

「C語言」static三大作用,面試高頻題,快做筆記!

結論:未經static修飾時每次i被呼叫的值都為0;生命週期隨著每次函式的呼叫而更新。

2。static修飾的區域性變數

「C語言」static三大作用,面試高頻題,快做筆記!

執行結果:

「C語言」static三大作用,面試高頻題,快做筆記!

結論:經static修飾後的區域性變數,不隨著函式的每次呼叫而更新,而是沿用上一次的值,被初始化一次。生命週期隨著程式碼執行結束而結束。

02

修飾全域性變數–靜態全域性變數

全域性變數之前以static 修飾就構成了靜態的全域性變數。

當一個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是有效的。而靜態全域性變數則限制了其作用域, 即只在定義該變數的原始檔內有效, 在同一源程式的其它原始檔中不能使用它。由於靜態全域性變數的作用域侷限於一個原始檔內,只能為該原始檔內的函式公用,因此可以避免在其它原始檔中引起錯誤。

static全域性變數只初使化一次,防止在其他檔案單元中被引用。

1。未經static修飾的全域性變數

「C語言」static三大作用,面試高頻題,快做筆記!

執行結果:

「C語言」static三大作用,面試高頻題,快做筆記!

結論:未經修飾時可跨檔案使用,輸出結果為10;

2。static修飾的全域性變數

「C語言」static三大作用,面試高頻題,快做筆記!

執行結果:

「C語言」static三大作用,面試高頻題,快做筆記!

結論:不可跨檔案使用全域性變數,輸出的是系統給的預設值0而非10。

03

修飾函式–靜態函式

1。未經static修飾的函式

「C語言」static三大作用,面試高頻題,快做筆記!

執行結果:

「C語言」static三大作用,面試高頻題,快做筆記!

結論:可跨檔案呼叫函式輸出結果3。

2。static修飾的函式

「C語言」static三大作用,面試高頻題,快做筆記!

執行結果:

「C語言」static三大作用,面試高頻題,快做筆記!

結論:經static修飾後不可跨檔案呼叫函式,並報錯。

04

總結

靜態函式會被自動分配在一個一直使用的儲存區,直到程式結束才從記憶體消失,避免呼叫函式時壓棧出棧,速度快很多

其他檔案可以定義相同名字的函式,不會發生衝突

靜態函式不能被其它檔案呼叫,作用於僅限於本檔案

當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。如果加了static,就會對其它原始檔隱藏。

文章作者:LHlucky_2來自CSDN論壇,如有侵權,請聯絡刪除。

「C語言」static三大作用,面試高頻題,快做筆記!

作者:CSDN-LHlucky_2

微訊號|wanshuIT

新浪微博|萬小樹IT

推薦文章