如 const int Max = 100;
int array[Max];
这种定义在C语言编译会产生错误,而在C++扩展了const的含义,可以使用C++的作用域规则将其定义限定在特定的函数或文件中(作用域描述了名称在各种模块中的可知程度)。
2、#define也可以定义符号常量,为什么要推荐使用const了?
a、const能够明确指定类型;
b、可以使用C++的作用域规则将定义限定在特定的函数或文件中
c、可以将const用于更复杂的类型
3、在C++中,const限定符对默认存储类型稍有影响。
在默认情况下全局变量的链接性是外部的,但const全局变量的连接性为内部的。就是说,在C++看来,全局const定义就像使用了static说明符一样。
cons int fingers = 10; // same as static const int fingers;
int main(void)
{
....
}
4、const定义节省内存分配、提高了效率
编译器通常不为普通const变量分配存储空间,而是将他们保存在符号表中,这使得他成为一个编译期间的值,没有了存储与读内存的操作,使得他的效率很高;const定义的只读变量在程序运行期间只有一个备份,而#define定义的宏常量在内存中有若干个备份,#define宏在预编译阶段进行替换,而const修饰的只读变量是在编译的时候确定其值。
#define M 3;
const int N = 5;
int i = N; //此时为N分配内存,以后不再分配
int I = M; //预编译期间进行宏替换,分配内存
int j = N; //没有分配内存
int J = M; //在进行宏替换,又一次分配内存
4、通常只读变量的声明如下:
const type name = value;//应该在声明中对const进行初始化,下面的代码风格可不好
const int toes;
toes = 10
如果在声明只读变量没有提供值,则该变量的值是不确定的,而且无法修改。
5、const的一些用用法
a、修饰一般变量
b、修饰数组
格式:int const a[5] = {1, 2, 3, 4, 5}; 或者 const int a[5] = {1, 2, 3, 4, 5};
c、修饰指针
d、修饰函数的参数
e、修饰函数的返回值