C++中const符号表原理图
const int a=10;
当遇见常量声明时,在符号表中放入常量
编译过程中若发现使用常量则直接以符号表中的值替换
编译过程中若发现对const使用了entern或者&操作符,则给对应的常量分配存储空间。
key value
a 10
结论:
C语言中const变量是只读变量,有自己的存储空间
C++中的const常量
可能分配存储空间,也可能不分配存储空间
当const常量为全局,并且需要在其他文件中使用时;当使用&操作符取const常量的地址时-->分配存储空间
C++中的const常量类似于宏定义
const int c =5; ≈ #define c 5
C++中的const常量与宏定义不同
const常量是由编译器处理的,提供类型检查和作用域检查
宏定义由预处理器处理,只是单纯的文本替换。
在函数fun中定义 const int a=10;
#define b 10
则在fun函数之外,只可以使用b而不能使用a!
来源:oschina
链接:https://my.oschina.net/u/3749576/blog/1622293