C 學習筆記(三)儲存類

2021-09-26 10:29:55 字數 1684 閱讀 7108

下面列出 c++ 程式中可用的儲存類:

auto 關鍵字用於兩種情況:宣告變數時根據初始化表示式自動推斷該變數的型別、宣告函式時函式返回值的佔位符。

auto f=3.14;      //double

auto s("hello"); //const char*

auto z = new auto(9); // int*

auto x1 = 5, x2 = 5.0, x3='r';//錯誤,必須是初始化為同一型別

register 儲存類用於定義儲存在暫存器中而不是 ram 中的區域性變數。這意味著變數的最大尺寸等於暫存器的大小。

暫存器只用於需要快速訪問的變數,比如計數器。還應注意的是,定義 『register』 並不意味著變數將被儲存在暫存器中,它意味著變數可能儲存在暫存器中,這取決於硬體和實現的限制。

static 儲存類指示編譯器在程式的生命週期內保持區域性變數的存在,而不需要在每次它進入和離開作用域時進行建立和銷毀。因此,使用 static 修飾區域性變數可以在函式呼叫之間保持區域性變數的值。

static 修飾符也可以應用於全域性變數。當 static 修飾全域性變數時,會使變數的作用域限制在宣告它的檔案內。當 static 用在類資料成員上時,會導致僅有乙個該成員的副本被類的所有物件共享。

extern 儲存類用於提供乙個全域性變數的引用,全域性變數對所有的程式檔案都是可見的。當您使用 『extern』 時,對於無法初始化的變數,會把變數名指向乙個之前定義過的儲存位置。

當您有多個檔案且定義了乙個可以在其他檔案中使用的全域性變數或函式時,可以在其他檔案中使用 extern 來得到已定義的變數或函式的引用。可以這麼理解,extern 是用來在另乙個檔案中宣告乙個全域性變數或函式。

extern 修飾符通常用於當有兩個或多個檔案共享相同的全域性變數或函式的時候

main.cpp

#include int count ;

extern void write_extern();

int main()

support.cpp

#include extern int count;

void write_extern(void)

count is 5

mutable 說明符僅適用於類的物件,它允許物件的成員替代常量。也就是說,mutable 成員可以通過 const 成員函式修改。

使用 thread_local 說明符宣告的變數僅可在它在其上建立的執行緒上訪問。 變數在建立執行緒時建立,並在銷毀執行緒時銷毀。 每個執行緒都有其自己的變數副本。

thread_local 說明符可以與 static 或 extern 合併。

可以將 thread_local 僅應用於資料宣告和定義,thread_local 不能用於函式宣告或定義。

以下演示了可以被宣告為 thread_local 的變數:

thread_local int x;  // 命名空間下的全域性變數

class x

;static thread_local std::string x::s; // x::s 是需要定義的

void foo()

C 學習筆記 儲存類

auto f 3.14 double autos hello const char auto z newauto 9 int auto x1 5,x2 5.0,x3 r 錯誤,必須是初始化為同一型別 include 全域性變數 static int count 10 函式 void func voi...

C 學習筆記 7 儲存類

儲存類儲存類定義 c 程式中變數 函式的範圍 可見性 和生命週期。這些說明符放置在它們所修飾的型別之前。下面列出 c 程式中可用的儲存類 auto register static extern mutable thread local c 11 從 c 11 開始,auto 關鍵字不再是 c 儲存類...

C 學習筆記 六 儲存類

宣告變數時根據初始化表示式自動推斷該變數的型別 宣告函式時函式返回值的佔位符。c 11已棄用。auto f 3.14 double autos hello const char auto z new auto 9 int auto x1 5,x2 5.0,x3 r 錯誤,必須是初始化為同一型別定義儲...