C static關鍵字作用

2021-08-18 17:23:07 字數 770 閱讀 6676

1.static修飾全域性變數

當同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性,其它的原始檔也能訪問。

未加static的全域性變數,在符號表中是global符號,其他目標檔案可見,這樣的符號是要參與符號解析的。加了static之後,是local符號,其他目標檔案不可見,只在當前檔案中可見,不參與符號解析過程。所以多個原始檔可以定義同名的static全域性變數,不會產生重定義錯誤。

修飾全域性變數是改變變數的作用域,讓它只能在本檔案中使用。

2. 修飾區域性變數時,使它放在.data 或者.bss段,預設初始化為0,初始化不為0放在.data段,沒有初始化或初始化為0放在.bss段。程式一執行起來就給他分配記憶體,並進行初始化,也是唯一一次初始化。它的生存期為整個源程式,程式結束,它的記憶體才釋放。但是其作用域仍與自動變數相同,只能在定義該變數的函式內使用該變數。退出該函式後, 儘管該變數還繼續存在,但不能使用它。

修飾區域性變數是改變它的生存期,變為和整個程式的生命週期一樣。

3.修飾普通函式時,和修飾全域性變數一樣。函式經過編譯產生乙個函式符號,被static修飾後,就變為local符號,不參與符號解析,只在本檔案中可見。

4、修飾類的成員變數時。就變成靜態成員變數,不屬於物件,而屬於類。不能在類的內部初始化,類中只能宣告,定義需要在類外。類外定義時,不用加static關鍵字,只需要表明類的作用域。

修飾類的成員函式時。變成靜態成員函式,也不屬於物件,屬於類。形參不會生成this指標,僅能訪問類的靜態資料和靜態成員函式。呼叫不依賴物件,所以不能作為虛函式。用類的作用域呼叫。

C static 關鍵字作用

在全域性變數前加上static關鍵字,全域性變數就定義成了乙個全域性靜態變數。在區域性靜態變數之前加上static,區域性變數就成為乙個區域性靜態變數。在函式返回型別前加static,函式就定義為靜態函式。在類中,靜態成員可以實現多個物件之間的資料共享,並且使用靜態資料成員還不會破壞隱藏的原則,即保...

C static關鍵字的作用

在 c語言中,static 的字面意思很容易把我們匯入歧途,其實它的作用有三條。1 先來介紹它的第一條也是最重要的一條 隱藏。當我們同時編譯多個檔案時,所有未加 static 字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個原始檔,乙個是 a.c,另乙個是 m...

C static關鍵字作用總結

c 中static關鍵字作用總結 1.先來介紹它的第一條也是最重要的一條 隱藏。static函式,static變數均可 當同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。舉例來說明。同時編譯兩個原始檔,乙個是a.c,另乙個是main.c。複製 char a a gl...