使用#Define和const定义常量的区别


本文重点参考了@FCBayern,在此致谢!


#define

 使用#define进行常量的宏定义,在预处理时对代码段中出现的常量进行直接替换,不会为该常量分配内容空间。

const

  使用const进行定义的常量又被称为“常变量”,编译时系统会为该变量分配内存空间,并且该内存的访问权限为只读,这样就保证了该变量在运行期间不能被改变,实现了常量的功能。

比较

 对于const定义的常量,系统为其分配空间的大小取决于const所修饰的常量的数据类型,可见const是与数据类型密切相关的。而#define除了可以定义常量外,还能定义一个表达式甚至函数,可见宏定义对于数据类型是透明的,这在带来了一些方便的同时也增加了安全隐患。比如由于预料之外的优先级混乱问题,或者滥用宏函数导致程序长度不合理增加等。


转载请注明来源:©Tinshine