唯讀變數
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變數的位址,函式裡面不...