const和define的區(qū)別

C語言中的const變量是只讀,有自己的存儲空間
C++中的const修飾的是一個真正的常量

  1. 可能有分配存儲空間(對const使用了extern或&操作符),可能不會分配存儲空間(其他情況)
  2. 當const常量為全局時,并且需要在其他文件中使用時會分配存儲空間
  3. 當使用&操作符,取const常量的地址時會分配存儲空間
  4. 當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)錯誤。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容