知識分享:const 在C語言與C++中的區(qū)別與使用!
簡單的const關(guān)鍵字里面的學(xué)問還是挺大的,越是基礎(chǔ)的知識越是容易忘卻。

1.在c語言中const
在C語言中 const關(guān)鍵字用來修飾變量名為只讀,僅此而已。
也就是說通過變量名不可以修改它的值,但是可以通過得到它的地址來修改他的值。
同時被const修飾的全局變量也就是外連接,其他源文件要引用只需要加上extern即可。
被const修飾的全局變量不能以地址的形式進行修改,由于它在內(nèi)存中位于常量區(qū),他的地址空間是只讀的。在C語言中被const的變量是直接被分配內(nèi)存的。

2.c++中的const
2.1 c++中const的使用
c++中 const關(guān)鍵字被用來表示常量,和#define的作用一樣。
在C++中能否通過地址來改變它的值,取決于是否給他分配了內(nèi)存。主要分以下三中情況
1、const int a = 10;
這種情況是不分配內(nèi)存的,直接被寫在符號表中,即使后面被分配了內(nèi)存,那么a的值也不會被改變,輸出的值一直都是符號表中的值
測試結(jié)果如下圖所示:

2、int b =100;
const int a = b;
3、const person per ={"name","id"}
2和3這種情況都是直接分配內(nèi)存的,并不會被寫在符號表中,它的值是可以通過地址訪問的方式來改變的。
2.2 c++中const的使用建議
在c++中盡量將宏定義#define 替換為 const
由于#define在編譯的預(yù)處理階段就替換為相對應(yīng)的常量,假如 #define Max 1024; 那么我們在由于這發(fā)生錯誤,他只會提示1024出現(xiàn)錯誤,
而我們換成const int Max = 1024;系統(tǒng)就會提示我們這一行發(fā)生了錯誤,并且定義到相對應(yīng)的行。
2.3 常量指針與指針常量的區(qū)別
這一題目都是面試中好多公司愿意問的問題,剛好學(xué)習(xí)到這,就把這塊也納入到本章節(jié)中。
指針常量
int *const p;,顧名思義它是一個常量,只不過被指針修飾。
常量指針
const int *p;p是一個常量
寫在最后:另外,對于準備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!
微信公眾號:C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
編程學(xué)習(xí)書籍分享:

粉絲編程交流:
