1、修饰的对象不同
在C语言中,const修饰常变量;
在C++中,const修饰常量,值不可以修改。因为在预编译期的时候就将出现使用常量的地方替换成常量的值。
2、const 修饰的字符能否被编译通过
在C语言中,arr[a]就不能通过编译,因为 a 是一个变量,变量的大小需要在变量的地址中取值,而只有运行的时候才会在地址中取值,因此,在编译的时候 a 的值是不确定的。
在C++ 中,const修饰的 a 为常量,在编译的时候已经完成了值替换,所以arr[a] = {1,2,3}可以通过。
3、作用域
在C语言中,const修饰的常变量为全局变量,作用域为本文件。
在C++中,const的作用域为单文件,因为在编译期已经完成变量的字符替换,而编译期只能看到单文件,
但是,在const前面加上 entern ,例如 entern const int a = 10,则 a 升级为全局变量。