關於C 中的常量const

2021-09-18 06:45:31 字數 823 閱讀 4690

一、為什麼會有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引用,但是不能是...