const在c中,修饰的不是常量,而是只读变量,只读变量在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。C语言关键字const就是用来限定一个变量不允许被改变的修饰符(Qualifier)。上述代码中变量n被修饰为只读变量,可惜再怎么修饰也不是常量。
const int n = 5;
int a[n];
在C++中以上正确,但是在C语言中,以上会报错。在c中可以选择写成const int n; 把它当成是一个声明;但是在C++中是不对的。
在C语言中,const不是很有用,C迫使程序员在预处理器里使用#define。
----------------------------------------------
在C++中,用const常量完全取代宏常量,也可以用#define。使用const常量的好处:
1. const有数据类型,宏常量没有。编译器对前者进行类型安全检查,对后者仅执行替换,没有类型检查可以有意料外的错误;
2. 有些集成调试工具可以对const进行调试,对宏无法调试。