您現在的位置是:首頁 > 旅遊
「C語言」static三大作用,面試高頻題,快做筆記!
static的作用是什麼
點選藍字
關注我們
FOLLOW US
static(計算機高階語言關鍵字)
static三大作用:
修飾區域性變數–靜態區域性變數
修飾全域性變數–靜態全域性變數
修飾函式–靜態函式
01
修飾區域性變數–靜態區域性變數
把區域性變數改變為靜態變數後是改變了它的儲存方式即改變了它的生命週期。但不改變他的作用域。
static區域性變數只被初始化一次,下一次依據上一次結果值;
原始碼如下:
1。未經static修飾的區域性變數
執行結果:
結論:未經static修飾時每次i被呼叫的值都為0;生命週期隨著每次函式的呼叫而更新。
2。static修飾的區域性變數
執行結果:
結論:經static修飾後的區域性變數,不隨著函式的每次呼叫而更新,而是沿用上一次的值,被初始化一次。生命週期隨著程式碼執行結束而結束。
02
修飾全域性變數–靜態全域性變數
全域性變數之前以static 修飾就構成了靜態的全域性變數。
當一個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是有效的。而靜態全域性變數則限制了其作用域, 即只在定義該變數的原始檔內有效, 在同一源程式的其它原始檔中不能使用它。由於靜態全域性變數的作用域侷限於一個原始檔內,只能為該原始檔內的函式公用,因此可以避免在其它原始檔中引起錯誤。
static全域性變數只初使化一次,防止在其他檔案單元中被引用。
1。未經static修飾的全域性變數
執行結果:
結論:未經修飾時可跨檔案使用,輸出結果為10;
2。static修飾的全域性變數
執行結果:
結論:不可跨檔案使用全域性變數,輸出的是系統給的預設值0而非10。
03
修飾函式–靜態函式
1。未經static修飾的函式
執行結果:
結論:可跨檔案呼叫函式輸出結果3。
2。static修飾的函式
執行結果:
結論:經static修飾後不可跨檔案呼叫函式,並報錯。
04
總結
靜態函式會被自動分配在一個一直使用的儲存區,直到程式結束才從記憶體消失,避免呼叫函式時壓棧出棧,速度快很多
其他檔案可以定義相同名字的函式,不會發生衝突
靜態函式不能被其它檔案呼叫,作用於僅限於本檔案
當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。如果加了static,就會對其它原始檔隱藏。
文章作者:LHlucky_2來自CSDN論壇,如有侵權,請聯絡刪除。
作者:CSDN-LHlucky_2
微訊號|wanshuIT
新浪微博|萬小樹IT
推薦文章
- 摩梭族的走婚儀式,不要靠女性養孩子,男方不用承擔任何責任
三、現在的時代,如果想要撫養一個孩子,需要考慮太多的因素摩梭族的走婚是不需要考慮家庭經濟條件的,而且都是由女性撫養孩子...
- 下禮拜,思之如狂,為愛執著,相擁而泣,白首終成約
處女座的人,他們不會因為一些不順心的事情,而放棄自己的追求,而是會用一種很溫馨的方式來處理...
- 續航1200Km,原力電驅加持的長安深藍SL03,對比驅逐艦05你怎麼選
編者按:必須承認一點,比亞迪驅逐艦05在20萬內的混動汽車市場,自一上市就成為標杆車型,從價格、配置、動力、續航等多個層面,改變了我們對十幾萬元混動轎車的舊有認知,但是標杆車型遇到長安深藍SL03增程版這個降維而來的另類,原本的絕對優勢就被...