首先,static關鍵字的意思是靜態的,用於修飾區域性變數,全域性變數和函式,修改其資料儲存型別
1.區域性變數:在任意乙個函式內部定義的變數(不加static),初始值不確定,出函式自動銷毀,存放於棧區。 使用static修飾這個變數時,編譯器會把她初始化為零,儲存於靜態區,函式返回時值保持不變,出函式不銷毀,下一次進入函式依然存在。根本原因——static修飾的區域性變數儲存在靜態區。
2.全域性變數:普通全域性變數定義在函式體外部yzvuzc,在靜態區分配儲存空間,編譯器自動對其初始化。普通全域性變數對整個工程可見,其他檔案使用關鍵字extern外部宣告後可以直接使用。靜態全域性變數僅對當前檔案可見,程式設計客棧其他檔案不可訪問,其他檔案可以定義與其同名的變數,兩者互不影響。 在定義不需要與其他檔案共享的全域性變數時,加上static關鍵字能夠有效地降低程式模組之間的耦合,避免不同檔案同名變數的衝突,且不會誤使用。
3.函式:在函式的返回型別前加上static,就是靜態函式。例如:static int main()靜態函式只能在宣告它的檔案可見,其他檔案不能引用該函式。不同檔案可以使用相同名字靜態函式非靜態函式可以在另乙個檔案直接引用。
1.當使用普通區域性變數時,如程式設計客棧圖,iwww.cppcns.comnt a是乙個區域性變數,每次出函式後自動銷毀,所以列印出"6666666666";
當使用靜態區域性變數時,如圖。static修飾的區域性變數除了區域性範圍後不會銷毀,下一次進入函式依然存在。
2.如圖 ,static聲名的函式不能被另乙個檔案引用
因為static修飾的區域性變數是儲存在靜態區的,static修飾全域性變數時,實際改變的是變數的儲存位置。 區域性變數放在棧區的,被static修飾後放在了靜態區。從而導致除了作用域依然存在,生命週期並沒有結束
如圖為儲存區示意圖
本文標題: 詳解c語言中的static關鍵字
本文位址:
C語言中static關鍵字詳解
c語言中staic關鍵字很簡單,簡單到你的任何乙個專案中可以不寫乙個staic關鍵字也是沒有問題的。寫這篇章主要是一下自己的staic的理解和應用,當然在章開頭依舊要照本宣科簡述一下static關鍵字。static關鍵字在嵌入式c語言當中很簡單,它有三個作用 作用一 在函式體,乙個被宣告為靜態的變數...
c語言中的static詳解
c語言中static的語義 1.static變數 1 區域性a.靜態區域性變數在函式內定義,生存期為整個源程式,但作用域與自動變數相同,只能在定義該變數的函式內使用。退出該函式後,儘管該變數還繼續存在,但不能使用它。b.對基本型別的靜態區域性變數若在說明時未賦以初值,則系統自動賦予0值。而對自動變數...
C語言中static關鍵字的作用詳解
在c語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條。1 先來介紹它的第一條也是最重要的一條 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個原始檔,乙個是a.c,另乙個是main.c。...