文档章节

嵌入式培训干货分享:C++中const 和 define 的区别

d
 dalingn
发布于 2017/02/15 16:26
字数 1044
阅读 7
收藏 0

情人节刚过,不知道大家的心情如何,朋友圈里撒的各种狗粮,幸福晒了一遍又一遍,但最高调的还属程序员们,在很多人眼里,这些钱多人傻的圈子里,他们根本不懂得浪漫的真正的含义,但以下这些程序员的浪漫情调真的能吓坏人。

干货分享之C++中const 和 define 的区别

干货分享之C++中const 和 define 的区别

哈哈,是不是好有新意,但这样的新意,我们也只能默默关注了,我们还是把目光继续投入到我们的学习和工作当中,有了资本才有撒狗粮的机会,努力几个月,到七夕就有机会了,我们还是集中注意力来看看今天的干货吧。

C++中我们经常使用const和define,但是两者具体有什么区别呢?

用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在程序中使用到该常量的地方都要进行拷贝替换;

用const float MAX = 255; 定义的常量有类型名字,存放在内存的静态区域中,在程序运行过程中const变量只有一个拷贝,而#define 所定义的宏变量却有多个拷贝,所以宏定义在程序运行过程中所消耗的内存要比const变量的大得多;

用define定义的常量是不可以用指针变量去指向的,用const定义的常量是可以用指针去指向该常量的地址的;

干货分享之C++中const 和 define 的区别

用define可以定义一些简单的函数,const是不可以定义函数的.

具体来说,有以下几方面的区别:

1.编译器处理方式

define – 在预处理阶段进行替换

const – 在编译时确定其值

2.类型检查

define – 无类型,不进行类型安全检查,可能会产生意想不到的错误

const – 有数据类型,编译时会进行类型检查

3.内存空间

define – 不分配内存,给出的是立即数,有多少次使用就进行多少次替换,在内存中会有多个拷贝,消耗内存大

const – 在静态存储区中分配空间,在程序运行过程中内存中只有一个拷贝

4.其他

在编译时, 编译器通常不为const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

宏替换只作替换,不做计算,不做表达式求解。

宏定义的作用范围仅限于当前文件。

默认状态下,const对象只在文件内有效,当多个文件中出现了同名的const变量时,等同于在不同文件中分别定义了独立的变量。

如果想在多个文件之间共享const对象,必须在变量定义之前添加extern关键字(在声明和定义时都要加)。

规则

在C++ 程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。

看完这些干货,是不是感觉立马充实了不少,如果想要快速加入IT行业,可以参加相关岗位的培训,毕竟是个捷径嘛,近期华清远见推出了新课程体系内容,优惠力度很大,可以登录官网了解了解……

凡在活动期间(2017.1.15-3.15),报名华清远见嵌入式、Android、HTML5、VR/AR、UI任意一门就业班课程的学员,可立即获得千元现金红包!

单人报名立即获得【幺鸡红包】:¥999

2人团报每人均可获得【双喜红包】:¥1299

3人及3人以上团报每人均可获得【全家桶红包】:¥1599

报名即可领取现金红包:http://www.embedu.org/zhuanti/sales-bbs.html

© 著作权归作者所有

d
粉丝 5
博文 110
码字总数 110065
作品 0
海淀
私信 提问
C语言/C++编程零基础入门到进阶知识学习

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/04/01
0
0
C语言编程学习,你的第一个Windows程序!

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/05/23
0
0
C语言/C++编程基础入门到精通开发学习—蠕虫病毒

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/03/29
0
0
C语言编程学习之找零钱的贪婪算法

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/05/14
0
0
C语言编程基础新手学习经典练习题和答案详解入门必备

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/05/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何使用soapUI模拟webservice客户端发送请求

参考资料 https://jingyan.baidu.com/article/cbcede0712849a02f40b4d88.html 左边是请求参数,可以自己填写!按着那个绿色三角箭头可以模拟发送请求,右边是返回的报文 soapui如何发送xml格...

故久呵呵
33分钟前
4
0
Java Security 介绍

1.介绍 Java平台设计的重点是安全性。在其核心,java语言本身是类型安全的并且提供了垃圾自动回收,这使其增加了应用程序代码的健壮性。安全的类加载以及验证机制确保了只有合法的代码才能够...

lixiaobao
39分钟前
5
0
Niushop开源商城系统-分销商管理

分销商管理 1.分销员的招募与管理 如何申请成为分销员? 在wap端个人中心满足之前设置的升级条件,可以申请分销员 开启分销商审核,需要在后台分销商管理——》待审核处进行审核通过。 通过完...

niushop-芳
39分钟前
4
0
为什么大公司一定要使用 DevOps?

究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁,即开发团队和IT运维团队。那么,DevOps的意图是什么呢?即在两个团队之间,建立良好的沟通和协作,更快更可靠...

cs平台
41分钟前
5
0
高危预警|RDP漏洞或引发大规模蠕虫爆发,用户可用阿里云免费检测服务自检,建议尽快修复

2019年9月6日,阿里云应急响应中心监测到Metasploit-framework官方在GitHub空间公开了针对Windows远程桌面服务远程命令执行漏洞(CVE-2019-0708)的利用代码。利用该代码,无需用户交互操作,即...

Mr_zebra
46分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部