根据笔者的归纳,主要有以下三点:
(1)C++能够把已用常量赋值(必须是常量赋值而不是函数赋值等)的const变量看作编译期常数,而C没有这种功能。
const int BUFSIZE = 1024; //必须是常量赋值
char buf[BUFSIZE]; //C++中允许
(2)C++默认const变量的链接性质是内部的,而C则默认是外部的。在C++中必须使用extern声明a,a才能在其他文件使用。
const int a = 0; //C++中不可以在其他文件中使用,C可以
extern const int a = 0; //C++中可以在其他文件中使用
(3)C只能允许常量初始化const外部变量,但是C++中没有限制,如:
int f(void);
const int a = f(); //C++允许