-
存儲類
鎖定
- 中文名
- 存儲類
- 外文名
- Storage Class
- 繁 體
- 存儲類
- 拼 音
- cún chǔlèi
- 注 音
- ㄘㄨㄣˊ ㄔㄨˇㄌㄟˋ
- 拉丁文名
- adipiscing elit
目錄
存儲類存儲類的分類
存儲類是C語言與C++語言的標準中,變量與函數的可訪問性(即作用域範圍scope)與生存期(life time)。
存儲類可分為auto、register、static、extern、mutable、thread_local等。
存儲類auto類
auto類是指定於在{與}所限定的作用域內部的局部變量的缺省存儲類。例如:
{
int Count;
auto int Month;
}
上述兩個變量具有相同的存儲類。實際上auto關鍵詞一般都省略。
存儲類register
register關鍵字提示編譯器把局部變量或函數的形參儘可能放入CPU的寄存器中,以便快速訪問。因此變量的字節長度不應該超過寄存器的長度。不要用取地址符(&)去獲得此變量的內存地址。例如:
{
register int Miles;
}
存儲類static
static是全局變量的默認存儲類。例如:
static int Count;
int Road;
main()
{
printf("%d\n", Count);
printf("%d\n", Road);
}
Count與Road兩個變量都是默認的static存儲類。
局部變量也可以具有static存儲類。例如:
void Func(void)
{
static sum=1;
}
實際上,static本意是指變量的值在程序生存期一直可以保持,而且變量需要初始化。全局變量加上static關鍵字,實際上改變的是全局變量的可見性,即僅在本編譯單元(translate unit)內部可見、可訪問,其它編譯單元不可訪問此全局變量。例如,上例中的全局變量count。
存儲類extern
extern存儲類是指全局變量可以被各個對象模塊訪問。使用extern關鍵字時,表示變量已經在別處定義,所以不能在此處初始化。
存儲類mutable
mutable存儲類只能用於類的數據成員,不能用於普通變量。具有mutable性質的類的數據成員打破了類對象的const限定,允許修改類的mutable的數據成員,即便類的其它成員仍然是const只讀屬性。
存儲類thread_local
適用於命名空間內的變量、全局作用域的變量、函數內部定義的靜態變量,如果使用了thread_local關鍵字,則在運行時不同的線程具有該變量的不同的存儲位置,即各有各的副本。因此,具有thread_local存儲類的變量,必然具有static存儲類性質,不管是否使用了static關鍵字。
存儲類C++2011的新定義的概念
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:9次歷史版本
- 最近更新: LYPLGFX