const与#define

眉间皱痕 提交于 2019-12-09 20:57:11

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!

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!