共用方式為


C 儲存類別

變數的「儲存類別」可判斷項目的存留期為「全域」或「區域」。 C 將這兩個存留期稱為「靜態」和「自動」。具有全域存留期的項目會持續存在,並且在程式的整個執行過程中保有值。 所有函式都具有全域存留期。

每次當有控制項傳遞至用於定義自動變數,或具有區域存留期之變數的區塊時,就會為這些變數配置新的儲存區。 當執行回傳時,變數就不再包含有意義的值。

C 提供了下列儲存類別指定名稱:

語法

storage-class-specifier
auto
register
static
extern
typedef
__declspec ( extended-decl-modifier-seq ) /* Microsoft 特定的 */

除了 __declspec 之外,您只能在宣告中的 declaration-specifier 中使用一個 storage-class-specifier。 如果未指定儲存類別,則區塊內的宣告會建立自動物件。

autoregister 指定名稱宣告的項目則具有區域存留期。 以 staticextern 指定名稱宣告的項目則具有全域存留期。

由於 typedef__declspec 在語意上與其他四個 storage-class-specifier 終端項不同,因此我們會分別討論它們。 如需有關 typedef 的特定資訊,請參閱 typedef 宣告。 如需有關 __declspec 的特定資訊,請參閱擴充儲存類別屬性

變數和函式宣告在原始程式檔內的位置也會影響儲存類別和可視性。 在所有函式定義外部的宣告會稱為出現在「外部層級」。在函式定義內的宣告則出現在「內部層級」。

每一個儲存類別指定名稱的確切意義取決於兩個因素:

  • 宣告出現在外部或內部層級

  • 所要宣告的項目為變數或函式

外部層級宣告的儲存類別指定名稱內部層級宣告的儲存類別指定名稱將描述各種宣告中的 storage-class-specifier 終端項,並且說明變數中省略 storage-class-specifier 時的預設行為。 具有函式宣告的儲存類別指定名稱將討論搭配函式使用的儲存類別指定名稱。

另請參閱

宣告和類型