說明符和限定符

2021-06-21 20:05:27 字數 1170 閱讀 6709

有些被稱為儲存說明符或cv-限定符的c++關鍵字提供了其他有關儲存的資訊。

儲存說明符:

1)auto(在c++中不再是說明符)

2)register

3)static

4)extern

5)thread local(c++11新增的)

6)mutable

下面就是cv限定符

1)const

2)volatile

關鍵字volatile表明,即使程式**沒有對記憶體單元進行修改,其值也可能發生變化。該關鍵字的作用就是為了改善編譯器的優化能力。

可以用它來指出,即使結構(或類)變數為const,其某個成員也可以被修改。例如:

在c++中,const限定符對預設儲存型別稍有影響。在預設情況下全域性變數的鏈結性為外部的,但const全域性變數的鏈結性為內部的。也就是說,在c++看來,全域性const定義就像是有了static說明符一樣。

c++修改了常量型別的規則,讓程式設計師更輕鬆。例如,假設將一組常量放在標頭檔案中,並在同乙個程式的多個檔案中使用該標頭檔案。那麼,預處理器將標頭檔案的內容包含到每個原始檔中後,所有的原始檔都將包含類似下面這樣的定義:

const int fingers=10;

const char *warning="wak";

如果全域性const宣告的鏈結性像常規變數那樣是外部的,則根據單定義規則,這將出錯。也就是說,只能有乙個檔案可以包含前面的宣告,而其他檔案必須使用extern關鍵字來提供引用。另外,只有未使用extern關鍵字的宣告才能進行初始化:

extern const int fingers;

extern const char *warning;

因此,需要為某個檔案使用一組定義,而其他檔案使用另一組宣告。然而,由於外部定義的const資料的鏈結性為內部的,因此可以在所有檔案中使用相同的宣告。

內部鏈結性意味著,每個檔案都有自己的一組常量,而不是所有檔案共享一組常量。每個定義都是其所屬檔案私有的,這就是能夠將常量定義放在標頭檔案中的原因。這樣,只要在兩個源**檔案中包括同一標頭檔案,則它們將獲得同一組常量。

C 說明符和CV限定符

1.下面是儲存所說明符 2.下面就是cv限定符 volatile 關鍵字volatile表明,即使程式 沒有對記憶體單元進行修改,其值也可能發生變化。例如,可以將指標指向某個硬體位置,其中包含了來自串列埠的時間和資訊。在這種情況下,硬體 而不是程式 可能修改其中的內容。或者兩個程式可能互相影響,共享...

c 儲存說明符以及cv限定符總結

c 中的儲存說明符種類如下 cv限定符有 下面詳細說一下功能 auto 在c 11之前用來表示變數是一種自動型的變數,其儲存的生命週期為乙個函式或者 塊裡,若不顯式定義,預設為自動儲存變數。而在c 11之後,auto被用作自動判別資料型別。例如以下 c 11標準及以上 int a 1,b 2 aut...

引用限定符

通常,我們在乙個物件上呼叫成員函式,而不管該物件是乙個左值還是乙個右值。例如 string s1 a value s2 another auto n s1 s2 find a 此例中,我們在乙個string右值上呼叫find成員,該string右值是通過連線兩個 string 而得到的。有時,右值的...