const修饰的是只读变量,不是常量,其值在编译时不能被使用,因为编译器在编译时不知道其存储的内容.编译器通常不为普通const只读变量分配存储空间,而使将他们保存在符号表中,这使得他成为一个编译期间的值,没有了存储与内存的操作,使得它的效率也很高. 例如: #define M 3 //宏常量 const int N=5; //此时并未将N放入内存中 ······ int i=N; //此时为N分配内存,以后不再分配 int I=M; //预编译期间进行宏替换,分配内存 int j=N; //没
http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html http://www.codeproject.com/Tips/803656/Practical-Difference-between-Const-ReadOnly http://stackoverflow.com/questions/55984/what-is-the-difference-between-const-and-readonly Apart from
const是constant的缩写,是恒定不变的意思.被const修饰的值,是只读变量. 1.const修饰只读变量,具有不变性 #include <stdio.h> int main() { const int Max = 100; int Array[Max]; return 1; } 在VC6.0中创建该文件,编译器会报错.因为我们定义数组必须指定其元素的个数,这也从侧面证实C语言中,const修饰的Max仍然是
C-C++到底支不支持VLA以及两种语言中const的区别 到底支不支持VLA VLA就是variable-length array,也就是变长数组. 最近写程序的时候无意间发现,gcc中竟然支持下面这种写法: int n = 10; int a[n]; 注意上面的语句是在函数内部写的,也就是n和a都是自动变量. 当时十分疑惑,C语言中数组的长度不应该是常量或常量表达式吗?为什么变量也可以.我将代码在VC中跑了一下,发现编译出错,提示数组的大小未知,说明VC中是不支持VLA的. 那既然有的编译器