【正确答案】
【答案解析】尺有所短,寸有所长,define与const都能定义常量,效果虽然一样,但是各有侧重。define既可以替代常数值,又可以替代表达式,甚至是代码段,但是容易出错,而const的引入可以增强程序的可读性,它使程序的维护与调试变得更加方便。具体而言,它们的差异主要表现在以下几个方面:
1)define只是用来进行单纯的文本替换,define常量的生命周期止于编译期,不分配内存空间,它存在于程序的代码段,在实际程序中它只是一个常数,一个命令中的参数并没有实际的存在;而const常量存在于程序的数据段,并在堆栈中分配了空间,const常量在程序中确确实实地存在,并且可以被调用、传递。
2)const常量有数据类型,而define常量没有数据类型。
编译器可以对const常量进行类型安全检查,如类型、语句结构等,而define不行。
3)很多IDE支持调试const定义的常量,而不支持define定义的常量。
由于const修饰的变量可以排除程序之间的不安全性因素,保护程序中的常量不被修改,而且对数据类型也会进行相应的检查,极大地提高了程序的健壮性,所以一般更加倾向于用const来定义常量类型。