c 基礎知識12 const 生成唯讀變數

2021-10-23 18:09:27 字數 1099 閱讀 6372

唯讀變數

c++語言中只有字面量初始化的const常量才能進入符號表中。

當出現編譯時不能確定const常量的時,const常量不能進入符號表中。而只是作為乙個唯讀變數(當然,這個變數不能作為左值使用)。如下兩種即為不確定情況:

1.用其它變數初始化const常量

2.被volatile修飾的const常量

舉例1.

char a =

'x';

const

char

& b1 = a;

//這裡定義乙個const引用b1

const

int& b2 = a;

//這裡定義乙個const引用b2,注意這裡會預設將char型a轉換為int型

a ='y'

;//這裡修改後, a b1均為'y',但是b2仍為'x'。

//因為當型別不同,需要型別轉換時,會生成乙個新的唯讀變數。

//所以這裡修改的只是a 和 b1引用,而b2這個唯讀變數沒變。

舉例2.

int a =1;

const

int b = a;

//這裡const常量b被其它變數a初始化,上面說了,這裡b只是乙個唯讀變數

int* p =

const_cast

<

int*

>

(&b)

;//取消唯讀屬性

*p =5;

//這裡修改後a==1, b==*p==5

舉例3.

volatile

const

int a =1;

//這裡定義了volatile修飾的const常量a,上面說了,這裡a只是乙個唯讀變數

int* b =

const_cast

<

int*

>

(&a)

;//這裡強制轉換取消唯讀屬性

b =5

;//這裡修改後, a b均為5

C 基礎知識之const和readonly關鍵字

在了解這兩個關鍵字的時候我們先來了解一下靜態常量和動態常量。指編譯器在編譯時候會對常量進行解析,並將常量的值替換成初始化的那個值。動態常量的值則是在執行的那一刻才獲得的,編譯器編譯期間將其標示為唯讀常量,而不用常量的值代替,這樣動態常量不必在宣告的時候就初始化,而可以延遲到建構函式中初始化。cons...

C 基礎知識複習 const關鍵字

沒事翻了下c primer,開卷有益吧,加深下印象,留個複習記錄如下 1 const 指標與指向 const物件的指標 const int p 指向const int 的指標 int const p 指向int的const指標 記憶方法 從右往左讀,讀作is a pointer to。2 const...

廣州尚觀科技 c 基礎知識 const

const關鍵字表示限定為唯讀 const int p 表示不能通過指標變數 p來改變位址上的值 我們需要寫一函式僅僅是接收引數的位址,而不會改變它的值時,就可以使用 const.如乙個函式 void func conststudent p 這樣反映出我們需傳遞 student變數的位址,函式裡面不...