一、為什麼會有const,它有什麼用?
加了const的變數只可讀不可寫。
如:指標常常是邊讀邊移動,而不是邊寫邊移動,許多函式引數是唯讀不寫的。
一、const的不同位置有什麼區別?
char *constcp; //到char的const指標
charconst *pc1; //到const char的指標
constchar *pc2; //到const char的指標(後兩個宣告是相同的)
技巧:從右向左讀的記憶方式:
cp is a const pointer to char. 故pc不能指向別的字串,但可以修改其指向的字串的內容
pc2 is a pointer to const char. 故*pc2的內容不可以改變,但pc2可以指向別的字串
舉例:對於常量指標,不能通過該指標來改變所指的內容。即,下面的操作是錯誤的:
int i = 10;
const int *pi = &i;
*pi = 100;
因為你在試圖通過pi改變它所指向的內容。但是,並不是說該記憶體塊中的內容不能被修改。我們仍然可以通過其他方式去修改其中的值。例如:
通過i直接修改:
i = 100;
或者使用另外乙個指標來修改:
int *p = (int*)pi;
*p = 100;
c 的const常量優化
const int a 10 int b const cast a b 20 cout a b endl 輸出為10 20 原因如下 c 常量優化策略 a為const在編譯階段由於編譯器優化策略,會直接將上下文中出現a的地方替換掉。因而編譯結束時實際 語句相當於這樣 cout 10 b endl 如...
c和c 中的const與常量摺疊
c中const修飾的是唯讀變數,c 中const修飾的是常量 在c c 中const在使用並無太大區別,只是c 對const更為嚴格,並且對const修飾的量進行了常量摺疊。先看如下例子,例子中不只測試c c 中const 的區別,也順便測試了const int 指標與int const指標的區別 ...
C 中Const常量和ReadOnly的區別總結
複習基礎知識的時候,看到了readonly這裡,被書裡說的感覺忘了和const有什麼區別了,索性今天就總結一下,以便於後續的學習。一 常量const 1.宣告時必須初始化值 2.宣告後值不能改變 3.編譯時決定 4.通常是簡單型別或由簡單型別組成的表示式做初始化語句,也可以是null引用,但是不能是...