C 學習 static關鍵字的作用和用法

2021-09-20 21:40:41 字數 1146 閱讀 7574

作用1:隱藏。(static函式,static變數均可)當同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。

作用2:保持變數內容的持久。(static變數中的記憶功能和全域性生存期)儲存在靜態資料區的變數會在程式剛開始執行時就完成初始化,也是唯一的一次初始化。共有兩種變數儲存在靜態儲存區:全域性變數和static變數,只不過和全域性變數比起來,static可以控制變數的可見範圍,說到底static還是用來隱藏的。

作用3:預設初始化為0。(static變數)

作用4:c++中的類成員宣告static。

函式體內static變數的作用範圍為該函式體,不同於auto變數,該變數的記憶體只被分配一次,因此其值在下次呼叫時仍維持上次的值;  

在模組內的static全域性變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問;   

在模組內的static函式只可被這一模組內的其它函式呼叫,這個函式的使用範圍被限制在宣告它的模組內;   

在類中的static成員變數屬於整個類所擁有,對類的所有物件只有乙份拷貝;   

在類中的static成員函式屬於整個類所擁有,這個函式不接收this指標,因而只能訪問類的static成員變數。

static類物件必須要在類外進行初始化,static修飾的變數先於物件存在,所以static修飾的變數要在類外初始化

由於static修飾的類成員屬於類,不屬於物件,因此static類成員函式是沒有this指標的,this指標是指向本物件的指標。正因為沒有this指標,所以static類成員函式不能訪問非static的類成員,只能訪問 static修飾的類成員;

static成員函式不能被virtual修飾,static成員不屬於任何物件或例項,所以加上virtual沒有任何實際意義;靜態成員函式沒有this指標,虛函式的實現是為每乙個物件分配乙個vptr指標,而vptr是通過this指標呼叫的,所以不能為virtual;虛函式的呼叫關係,this->vptr->ctable->virtual function

C 關鍵字static作用

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

C 學習筆記(static關鍵字的作用)

1.全域性靜態變數 在全域性變數前加上關鍵字static,全域性變數就定義成乙個全域性靜態變數.靜態儲存區,在整個程式執行期間一直存在。初始化 未經初始化的全域性靜態變數會被自動初始化為0 自動物件的值是任意的,除非他被顯式初始化 作用域 全域性靜態變數在宣告他的檔案之外是不可見的,準確地說是從定義...

static關鍵字的作用

static關鍵字是c,c 中都存在的關鍵字,它主要有三種使用方式,其中前兩種在c c 語言中使用,第三種只在c 中使用 c,c 中具體細微操作不盡相同,本文以c 為準 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 下面就這三種使用方式及注意事項分別說明 一 區域性靜態變數...