C中的const:
修饰的变量是只读的,本质还是变量
其修饰的局部变量在栈上分配空间
其修饰的全局变量在只读存储区分配空间
const只在编译期有用,在运行期无用
C++中的const:
当碰见const声明时在符号表中放入常量
编译过程若发现使用常量则直接以符号表中的值替换
编译过程中若发现下属情况则给对应的常量分配空间:对const常量使用了extern,对const常量使用了&操作符
const int c=5; -----------> #define c 5-------->但const常量跟宏定义不同,const要进行类型检查和作用域检查,而不是简单的文本替换
#include <stdio.h> void f() { #define a 3 const int b = 4; } void g() { printf("a = %d\n", a); //printf("b = %d\n", b); } int main() { const int A = 1; const int B = 2; int array[A + B] = {0}; int i = 0; for(i=0; i<(A + B); i++) { printf("array[%d] = %d\n", i, array[i]); } f(); g(); return 0; }