C語言中的const變量是只讀,有自己的存儲空間
C++中的const修飾的是一個真正的常量
- 可能有分配存儲空間(對const使用了extern或&操作符),可能不會分配存儲空間(其他情況)
- 當const常量為全局時,并且需要在其他文件中使用時會分配存儲空間
- 當使用&操作符,取const常量的地址時會分配存儲空間
- 當const int &a = 10; const修飾引用時,也會分配存儲空間
如下第一個和第二個常整型
第三個c是一個指向常字符型的指針(所指向內(nèi)存數(shù)據(jù)不能被修改,但本身可以修改)
第四個d 常指針(指針變量不能被修改,但它所指向內(nèi)存空間可以被修改)
第五個e指向常字符型的常指針(指針和所指向內(nèi)存空間均不能被修改)
const int a; //
int const b; //寫法和上面一樣
const char *c;
char * const d;
const char * const e ;
指針變量和所指向的內(nèi)存空間變量不是同一個概念,看const放在*的左邊還是右邊也就是看const修飾指針變量還是修飾所指向的內(nèi)存空間。
define
#define定義常量,但其沒有數(shù)據(jù)類型
const常量是由編譯器處理的,提供類型檢查和作用域檢查
宏定義由預處理器處理,單純的文本替換,沒有類型安全檢查,并且在字符替換中可能會出現(xiàn)錯誤。