C static關鍵字的理解

2021-09-24 04:49:34 字數 439 閱讀 8348

分為以下四種情況:

如果乙個變數是普通全域性變數,從符號表裡面可以看出,普通全域性變數是global符號。因此在鏈結階段其他obj檔案也能夠看到。而這個變數如果是static修飾的全域性變數,它的符號就會變成local,只有當前的obj檔案可見。因此多個原始檔可以定義同名的static全域性變數,不會產生重複定義的錯誤。

普通區域性變數屬於指令,存放在.text**段上。執行時系統給棧上分配空間,區域性變數就成了棧上的一段記憶體。static修飾的區域性變數則是資料,存放在.data或.bss段上,直到整個程序結束,它的記憶體才釋放。

static修飾普通函式和static修飾全域性變數效果一樣。

static修飾成員方法使它成為靜態成員方法,不再產生this指標。呼叫不依賴於物件,靠類的作用域。

static修飾成員變數使它成為靜態成員變數,變數不再屬於物件,而屬於類。訪問不依賴物件,通過類的作用域。

c static 關鍵字用法

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

C static關鍵字作用

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

C static關鍵字詳解

color blue size large 1.預備知識 動態儲存和靜態儲存 記憶體中供使用者使用的儲存空間可以分為三部分,即 程式區,靜態儲存區,動態儲存區 資料分別存放在靜態儲存區和動態儲存區中。全域性變數儲存在靜態儲存區中,在程式開始執行時給全域性變數分配儲存單元,程式執行完畢就釋放這些單元。...