儲存類,鏈結和記憶體管理

2021-06-27 05:00:48 字數 1037 閱讀 1859

一,儲存類

不同的儲存類提供了變數的作用域,鏈結以及儲存時期的不同組合。

儲存時期,作用域,鏈結

儲存時期:變數在記憶體中保留的時間。

函式原型作用域從變數定義處一直到原型宣告的末尾。這說明編譯器在處理乙個函式的引數時,它所關心的只是該引數的型別。

乙個在所有函式之外定義的變數具有檔案作用域。

二,鏈結

關鍵字 :static,extern ,auto,register

static 表明鏈結型別,並非儲存時期

int abc = 5;    //檔案作用域,外部鏈結

static int hello = 6;   //檔案作用域,內部鏈結

int main(void)

2,具有**塊作用域的變數一般情況下具有自動儲存時期。在程式進入定義這些變數的**塊時,將為這些變數分配記憶體;當退出時這個**塊時,分配的記憶體將被釋放。

int mian(void)

auto int abc = 5;  //auto儲存類說明符,**塊私有

外部變數(external variable)

int abc;     //外部定義的變數

double up[100];  //   外部定義的陣列

extern char aa;  //  必須的宣告,因為aa在其他檔案中定義

int main(void)

extern int abc;  //  可選的宣告

extern double up[100];  //  可選的宣告

暫存器變數:

通常變數儲存在計算機記憶體中。暫存器可以被儲存到cpu暫存器中,從而可以被更快的訪問到,但是無法獲取到位址。

可以通過儲存類說明符register宣告暫存器變數。

int main(void)

register int abc;

儲存類說明符:

說明符auto表明乙個變數具有自動儲存時期;

說明符register只能用於**塊作用域的變數;

說明符extern 表明您在宣告乙個已經在別處定義了的變數;

儲存類 鏈結和記憶體管理

作用域 鏈結乙個 變數具有下列鏈結之一 外部鏈結 內部鏈結或空鏈結。具有 塊作用域或者函式原型作用域的變數有空鏈結,意味著它們是由其定義所在的 塊或者函式原型所私有的。具有檔案作用域的變數可能有內部或者外部鏈結。乙個具有外部鏈結的變數可以在乙個多檔案程式的任何地方使用。乙個具有內部鏈結的變數可以在乙...

儲存類 鏈結和記憶體管理

malloc calloc free ansi 型別限定符 冪等作用域描述了程式中可以訪問乙個識別符號的乙個或多個區域 函式作用域 函式原型作用域 從形參定義到原型宣告結束 檔案作用域 具有檔案作用域的變數可能有外部或者內部鏈結 預設是外部函式 可以被其它檔案訪問 只能用於所定義的檔案 定義在標頭檔...

C 儲存類 鏈結 記憶體管理

用於儲存程式資料的記憶體可用儲存時期 作用域 鏈結來表徵。儲存時期可以是靜態的 自動的 或是分配的。如果是靜態的,內存在程式開始執行時被分配,並在程式執行時一直存在。如果是自動的,變數所用內在程式執行到該變數定義所在 塊時才開始分配,退出 塊時釋放。如果是分配的記憶體,記憶體通過呼叫malloc 分...