| #define | const |
起作用的阶段 | 在编译的预处理阶段起作用 | 编译、运行的时候起作用 |
起作用的方式 | 是字符替换,没有类型检查 | 有类型检查 |
存储方式 | 只是进行展开,有多少次使用就替换多少次,它定义的宏常量在内存中有若干个备份 | 定义的只读变量在程序运行过程中只有一份备份 |
代码调试的方便程度 | 不能调试,因为在预编译阶段就已经替换掉了 | 可以进行调试 |
存储位置 | 代码段 | 只读数据段(全局变量);栈(局部变量) |
没有数据类型 | 有数据类型 可以节省空间,避免不必要的内存分配,提高效率 |