C 儲存類別
變數的「儲存類別」可判斷項目的存留期為「全域」或「區域」。 C 會呼叫這兩個存留期「靜態」和「自動」。具有全域存留期的專案存在,而且在整個程式執行期間都有值。 所有函式都具有全域存留期。
每次執行控制項傳遞至定義它們的區塊時,會自動變數或具有本機存留期的變數配置新的儲存體。 當執行回傳時,變數就不再包含有意義的值。
C 提供了下列儲存類別指定名稱:
語法
storage-class-specifier
:
auto
register
static
extern
typedef
__declspec (
extended-decl-modifier-seq
)
/* Microsoft 特定 */
__declspec
除了 之外,您在 宣告中 declaration-specifier
只能使用一個 storage-class-specifier
。 如果未指定儲存類別,則區塊內的宣告會建立自動物件。
使用 auto
或 register
規範宣告的專案具有本機存留期。 使用 static
或 extern
規範宣告的專案具有全域存留期。
由於 typedef
和 __declspec
與其他四 storage-class-specifier
個終端機的語意不同,因此會個別討論。 如需 的特定 typedef
資訊,請參閱typedef
宣告。 如需有關 __declspec
的特定資訊,請參閱擴充儲存類別屬性。
變數和函式宣告在原始程式檔內的位置也會影響儲存類別和可視性。 所有函式定義以外的宣告都稱為出現在「外部層級」。函式定義內的宣告會出現在「內部層級」。
每一個儲存類別指定名稱的確切意義取決於兩個因素:
宣告出現在外部或內部層級
所要宣告的項目為變數或函式
External-Level宣告的儲存類別規範和Internal-Level storage-class-specifier
宣告的儲存類別規範描述每種宣告中的終端機,並在從變數省略 時 storage-class-specifier
說明 預設行為。 具有函式宣告的儲存類別指定名稱將討論搭配函式使用的儲存類別指定名稱。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應