const(常量)和#define(宏定義)區別

記錄面試題

編譯器處理不同

宏定義是一個編譯時的概念,在預處理階段展開,在編譯時把所有的宏定義值得地方用宏定義常量替換,不能對宏定義進行調試,生命週期結束於編譯時期;
const常量是一個運行是的概念,在程序運行時使用,類似一個只讀數據塊。

存儲方式不同

宏定義是直接替換,不會分配內存,存儲在代碼段中;
const常量需要進行內存分配。

類型檢測

宏定義是字符替換,沒有類型檢測;
const常量聲明,需要類型檢測

const可以節省空間

宏咋代碼中會全部展開,如果過多使用宏會導致代碼膨脹;
const不同,const只在運行時有一份拷貝。

參考資料:
https://blog.csdn.net/sinat_20265495/article/details/52945960
https://www.nowcoder.com/questionTerminal/11692181b68642f89c11fa5b2413aaf1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章