const全局變量存儲在全局存儲空間,其值只有可讀屬性,不能修改;
const局部變量存儲在堆棧中,可通過指針修改其值;
const變量在預處理時處理,編譯器只對其值讀取一次
const定義的只讀變量在程序運行過程中只有一份拷貝(因為它是全局的只讀變量,存放在靜態區),而#define定義的宏常量在內存中有若干個拷貝。 #define宏是在預編譯階段進行替換,而const修飾的只讀變量是在編譯的時候確定其值。 #define宏沒有類型,而const修飾的只讀變量具有特定的類型 =========================================== const int *p; //p可變,p指向的對象不可變 int const*p; //p可變,p指向的對象不可變 int *const p; //p不可變,p指向的對象可變 const int *const p; //指針p和p指向的對象都不可變 ==================================== 總的來說: const:有數據類型,編譯進行安全檢查,可調試 define:宏,不考慮數據類型,沒有安檢,不能調試
https://blog.csdn.net/love_gaohz/article/details/7567856
https://blog.csdn.net/xingjiarong/article/details/47282255
https://blog.csdn.net/hyqsong/article/details/50867456
