C static關鍵字詳解

2021-08-30 05:18:13 字數 964 閱讀 3884

[color=blue][size=large]1.預備知識:動態儲存和靜態儲存

記憶體中供使用者使用的儲存空間可以分為三部分,即: 程式區,靜態儲存區, 動態儲存區

資料分別存放在靜態儲存區和動態儲存區中。全域性變數儲存在靜態儲存區中,在程式開始執行時給全域性變數分配儲存單元,程式執行完畢就釋放這些單元。它們的生命週期是整個程式執行的生命週期。在程式執行過程中它們佔據固定的儲存單元,而不是動態地分配和釋放。

2.static宣告的區域性變數

函式中的區域性變數,如果不用關鍵字static加以宣告,編譯系統對它們是動態分配儲存空間的。函式的形參和在函式中定義的變數都屬於這一類。在呼叫函式時,系統給形參和函式中定義的變數冬天分配儲存空間,資料儲存在動態儲存區中。在函式呼叫結束時就自動釋放這些空間。

靜態區域性變數有以下幾個特點:

(1)靜態區域性變數在靜態儲存區中分配儲存單元。在整個程式執行的過程中都不進行釋放

(2)為靜態區域性變數賦初值是在編譯時進行的。只賦初值一次,在程式執行時就已經有初值了。

(3)如果在定義區域性變數時不賦初值,對靜態變數自動賦值0 或空字元。

(4)雖然靜態區域性變數在函式呼叫結束後仍然存在,但其他函式是不能引用它的,也就是說,在其他函式中它是「不可見」的。

3.static宣告靜態外部變數

普通的外部變數可以供整個程式使用,在乙個外部變數的原始檔中宣告的外部變數,在另乙個檔案中用extern關鍵字加以引用。

用static關鍵字宣告的外部變數,只能在其宣告的原始檔中進行訪問,在其他檔案中是無法訪問的。因此,static關鍵字修飾的外部變數,為其加上了訪問域。

然而,值得注意的是,無論是加上static的外部變數或是沒有加static的外部變數,資料都要儲存在靜態的儲存區中。

4.總結

static修飾全域性變數,則該變數在本檔案中有效;static修飾區域性變數,則該變數可儲存狀態;static修飾函式,則函式僅在本檔案中有效。

[/size][/color]

c static 關鍵字用法

一 static 變數 static變數大致分為三種用法 1.用於區域性變數中,成為靜態區域性變數.靜態區域性變數有兩個用法,記憶功能和全域性生存期.2.用於全域性變數,主要作用是限制此全域性變數被其他的檔案呼叫 3.用於類中的成員.表示這個成員是屬於這個類但是不屬於類中任意特定物件 1.靜態區域性...

C static關鍵字作用

1.static修飾全域性變數 當同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性,其它的原始檔也能訪問。未加static的全域性變數,在符號表中是global符號,其他目標檔案可見,這樣的符號是要參與符號解析的。加了static之後,是local符號,其他目標檔案不...

C static關鍵字解析

1 static關鍵字修飾全域性變數時,該變數儲存在 區,初始化時機在main函式之前 好像所有全域性變數的初始化時機都是在main函式之前切被初始化為0 且static修飾的全域性變數僅限於本編譯單元 乙個編譯單元即是乙個cpp檔案 可訪問。2 static修飾區域性變數 即函式內部的變數 儲存在...