在C语言中const修饰只读变量,例如 const int a = 0; 此时a为只读的,不能通过 a = 10;这种手段进行值的修改,
若想修改a的值,可通过指针来完成,如 int *pa = (int *)&a, *pa = 10;此时 a 的值变为10;
在C++中,若const修饰变量,则该变量变为常量,存储在符号表中,使用时在从符号表中取值,且编译器是不会为该常量
分配内存,例如 const int a = 10;此时a的值固定为10,这类似于#define定义的宏;当需要对const常量进行取地址或
extern操作时,编译器会为这个变量在内存中开辟一个临时空间,但const常量并不使用这块空间,取值依旧从符号表中取。
关于const与#define的区别
1.宏(define)是在预处理时进行的完全的文本替换操作,const是在编译时处理的;
2.const常量会做类型检测与作用域检测
3.const常量的作用域与变量相同,而宏(define)的作用域为从宏定义位置开始到文件结束或到撤销宏为止(undef)。