Share via


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 的特定資訊,請參閱擴充儲存類別屬性

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

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

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

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

External-Level宣告的儲存類別規範和Internal-Level storage-class-specifier 宣告的儲存類別規範描述每種宣告中的終端機,並在從變數省略 時 storage-class-specifier 說明 預設行為。 具有函式宣告的儲存類別指定名稱將討論搭配函式使用的儲存類別指定名稱。

另請參閱

宣告和類型