C 總結static關鍵字的作用

2021-09-28 00:56:21 字數 1261 閱讀 5244

1、全域性靜態變數

在全域性變數前加上關鍵字static,全域性變數就定義成乙個全域性靜態變數。會被存放在靜態儲存區,在整個程式執行期間一直存在。

初始化:未經初始化的全域性靜態變數會被自動初始化為0(自動物件的值是任意的,除非他被顯式初始化);

作用域:作用域改變,為當前檔案中

2、區域性靜態變數

在區域性變數之前加上關鍵字static,區域性變數就成為了乙個區域性靜態變數。存放在靜態儲存區

初始化:未經初始化的區域性靜態變數會被自動初始化為0;

作用域:作用域沒有發生變化,當定義它的函式或者語句塊結束時,作用域結束。但是當區域性靜態變數離開作用域後,並沒有被銷毀,仍然留在記憶體當中,只是我們不能再對它進行訪問,直到該函式再次被呼叫,並且值不變,也就是它的生命週期改變了,跟隨整個程式。

3、靜態函式

在函式返回型別前加static,函式就定義為靜態函式。函式的定義和宣告在預設情況下都是extern的,但靜態函式只是在宣告它的檔案中可見,不能被其他檔案使用。

函式的實現使用static修飾,那麼這個函式只能在該cpp檔案中使用,不會與其他cpp中的同名函式起衝突。

作用域:改變函式作用域,只在當前檔案中生效

警告:不要在標頭檔案宣告static的全域性函式,不要在cpp內宣告非static的全域性函式,如果要在多個cpp內復用該函式,就把他的宣告放到標頭檔案中,否則cpp內部宣告需加上static修飾。

4、類的靜態成員

使用static修飾成員變數-----靜態成員變數。是類的屬性,不屬於某個具體的物件;所有型別物件共享,不會影響該類sizeof的結果;在類中只是宣告,必須將其放在類外進行初始化

5、類的靜態函式

本質:靜態成員函式沒有隱藏的this指標

靜態成員函式和靜態成員變數一樣,它們都屬於類的靜態成員,它們都不是物件成員。因此對靜態成員的引用都不需要物件名。

在靜態成員函式的實現中不能直接引用類中宣告的非靜態成員變數。如果靜態成員函式中要引用非靜態成員變數時,可以通過物件來引用。

呼叫靜態成員函式的格式:《類名》::《靜態成員函式名》(《參數列》)

static關鍵字的作用總結

1.靜態變數 1.全域性靜態變數 在全域性變數之前加乙個關鍵字static,那麼這個變數就變為了全域性靜態變數,儲存的區域變為了靜態儲存區,且這個變數會自動初始化為0,這個變數也就可以在本檔案中能夠被看見,其他檔案是看不見這個變數的。2.區域性靜態變數 在乙個區域性變數前加乙個static,那這個區...

C 關鍵字static作用

關鍵字static作用?static可以用作函式和變數的字首 在模組內的static變數可以被模組內所有函式訪問,但不能被模組外其他函式訪問。在模組內的static函式只可被這一模組內的其他函式呼叫,這個函式的使用範圍被限制在宣告它的模組內。2.1函式體內static變數的作用範圍為該函式體,不同於...

C 中static關鍵字作用總結

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