(1)起作用的阶段不同,#define是在编译的预处理阶段起作用,而Const是在编译、运行的时候起作用
(2)起作用的方式不同,#define只是简单的字符替换,没有类型检查,而const有对应的数据类型,需要进行判断
(3)就存储方式来看,#define只是进行展开,有多少个地方使用,就替换多少次,它定义的宏常量在内存中有好多备份,而const在内存中只有一个备份。
(4)从代码调试的方便程度而言,const是可以进行调试的,而#define不能调试,在预编译阶段已经替换过了。
const 的优点:
(1)const常量有数据类型,而宏常量没有。宏没有安全检查,在字符串替换阶段可能会发生错误。
(2)const可以节省空间,避免不必要的内存分配,提高效率。