文档章节

const与#define

lybnt
 lybnt
发布于 2018/02/19 11:11
字数 285
阅读 13
收藏 2

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!

 

 

© 著作权归作者所有

lybnt
粉丝 1
博文 17
码字总数 9244
作品 0
天津
私信 提问
加载中

评论(3)

Artrener
Artrener

引用来自“lybnt”的评论

引用来自“Artrener”的评论

这和编译器还是有关系的,在uvision c里函数局部const变量是没有分配空间的
😋谢谢 感谢纠正 我是刚开始学编程,写的东西还不严谨

��互相学习
lybnt
lybnt 博主

引用来自“Artrener”的评论

这和编译器还是有关系的,在uvision c里函数局部const变量是没有分配空间的
😋谢谢 感谢纠正 我是刚开始学编程,写的东西还不严谨
Artrener
Artrener
这和编译器还是有关系的,在uvision c里函数局部const变量是没有分配空间的
php中const与define的使用区别 详解

1、const用于类成员变量定义,一旦定义且不能改变其值。define定义全局常量,在任何地方都可以访问。 2、define不能在类中定义而const可以。 3、const不能在条件语句中定义常量 if (...) { c...

charley158
2013/07/05
45
0
PHP常量详解:define和const的区别

常量和变量有如下不同: ·常量前面没有美元符号($); ·常量只能用 define() 函数定义,而不能通过赋值语句; ·常量可以不用理会变量的作用域而在任何地方定义和访问; ·常量一旦定义就...

王永濤
2015/11/03
1K
0
define和const的区别--PHP

常量是一个简单的标识符。在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量)。常量默认大小写敏感。通常常量标识符总是大写的。 可以用define()函数来定义常量。在php5....

曲文
2017/11/17
7
0
PHP_define和const的区别/获取所有常量get_defined_constant()

常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)。常量默认为大小写敏感。通常常量标识符总是大写的。 可以用...

喵王不瞌睡
2014/11/27
2.7K
2
iOS学习——#define、const、typedef的区别

在iOS开发中经常遇到一些字段和类型的定义,例如配置生产和测试不同环境的参数等,这时候经常用到#define、const以及typedef。那么它们之间有什么区别呢?我们接下来一个一个具体了解下。 一...

mukekeheart
02/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud Alibaba 实战(二) - 关于Spring Boot你不可不知道的实情

0 相关源码 1 什么是Spring Boot 一个快速开发的脚手架 作用 快速创建独立的、生产级的基于Spring的应用程序 特性 无需部署WAR文件 提供starter简化配置 尽可能自动配置Spring以及第三方库 ...

JavaEdge
今天
7
0
TensorFlow 机器学习秘籍中文第二版(初稿)

TensorFlow 入门 介绍 TensorFlow 如何工作 声明变量和张量 使用占位符和变量 使用矩阵 声明操作符 实现激活函数 使用数据源 其他资源 TensorFlow 的方式 介绍 计算图中的操作 对嵌套操作分层...

ApacheCN_飞龙
今天
7
0
五、Java设计模式之迪米特原则

定义:一个对象应该对其他对象保持最小的了解,又叫最小知道原则 尽量降低类与类之间的耦合 优点:降低类之间的耦合 强调只和朋友交流,不和陌生人说话 朋友:出现在成员变量、方法的输入、输...

东风破2019
昨天
23
0
jvm虚拟机结构

1:jvm可操作数据类型分为原始类型和引用类型,因此存在原始值和引用值被应用在赋值,参数,返回和运算操作中,jvm希望在运行时 明确变量的类型,即编译器编译成class文件需要对变量进行类型...

xpp_ba
昨天
5
0
聊聊nacos Service的processClientBeat

序 本文主要研究一下nacos Service的processClientBeat Service.processClientBeat nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/core/Service.java public class Service ex......

go4it
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部