C 中的const關鍵字和volatile關鍵字

2021-09-30 07:30:27 字數 875 閱讀 6077

c中的const關鍵字預設是外部連線的,而c++中則是內部連線的,c++中並不給const常量分配儲存,而是將它放到乙個符號表中。如果const修飾的識別符號在編譯期間值未知,那麼就意味著需要儲存空間,也就是說在需要const變數位址的時候,也就是需要分配儲存的時候。

const也可以定義集合,編譯器不能將集合放到符號表中,所以必須分配記憶體。然而,其值在編譯時不能被使用,因為編譯器在編譯時不需要知道儲存的內容。不能夠定義乙個未知長度的陣列。如:

const int i=。

const修飾的指標格式const int * x和int const * x表達的是同乙個意思,x是乙個指向const的int普通指標。要想使指標成為乙個const,必須將const放到*的右邊。如int* const x表示指向int的const指標。

有時候在求表示式值期間,編譯器必須建立臨時物件。像其他任何物件一樣,他們需要儲存空間而且必須被構造和刪除。區別是我們從來看不到它們-----編譯器負責它們的去留以及它們存在的細節。它們自動成為常量。

可以在乙個宣告為const的函式中改變變數的值,這需要對this指標進行強制型別轉換,或者在類宣告中用mutable關鍵字指明變數是可以在const函式中改變的。如:

void y::f() const 或者

class y

void y::f() const

volatile的語法與const一樣,但是volatile的意思是「在編譯器認識的範圍外,這個資料可以被改變」。它告訴編譯器不要擅自做出有關資料的任何假定---在優化期間這是特別重要的。如果編譯器說,已經把資料讀進暫存器,而且再沒有與暫存器接觸。一般情況下,它不需要再讀這個資料,但是如果資料是被volatile修飾的,編譯器就不能做出這樣假定,因為可能被其他程序改變了,它必須重讀這個資料而不是優化這個**。

C中const關鍵字

const 用法 定義常量,修飾指標 函式的輸入引數和返回值,把定義或者修飾的變數屬性設為唯讀。本質上它只是在全域性資料段或者棧中定義的是乙個唯讀的常量,不是真正位於字串常量區。所以關鍵字const 並不能把變數變成真正的常量,事實上還是可以改變 const 定義的變數的值。const 的目的是為了...

C 中const關鍵字

一 const修飾指標變數 int num 0 1.const在 前面,表示const修飾指標指向的內容 const int p intconst p 2.const在 後面,表示const修飾指標變數 int const p 二 const修飾成員函式首先來看一下普通成員函式 class a fu...

C 中」const「關鍵字

關於c 中的const關鍵字的用法非常靈活,而使用const將大大改善程式的健壯性,現將本人的一些體會總結如下,期望對大家有所幫助 一 丶const基礎 如果const關鍵字不涉及到指標,我們很好理解,下面是涉及到指標的情況 int b 500 const int a b 1 int const a...