最新要闻
- 换皮系统实锤了?Win11曝出Win8老版本残留
- 新动态:被观众喷爆!《埃及艳后》成网飞评价最差剧集之一
- 今日热讯:1032km续航全球量产车第一!极氪001千里续航套装版开启交付
- 天天快消息!世卫组织建议勿用非糖甜味剂控制体重:会导致2型糖尿病、甚至死亡
- 苹果Siri即将大升级!体验巨变|全球简讯
- 博主每天都在纠结选小米13 Pro还是13 Ultra!雷军给出答案
- 世界最新:美国“悔棋翻盘”破坏多边经贸秩序——起底美国贸易战反智本质述评之三
- 头条:中秋节快乐贺词简短四字_中秋节快乐贺词
- 弯道超车?无需光刻工艺的处理器来了:成本暴降
- 重大突破!全国首例心脏不停跳人工心脏植入:患者恢复良好-世界视点
- 每日报道:21人合买 中2574万彩票摊主已转让摊位:4万就转手
- iQOO Neo8系列将支持Wi-Fi 7:峰值速率高达3.6Gbps 焦点信息
- 网传迪士尼乐园将落户成都 官方回应:暂未收到选址情况 世界时讯
- 抓好消防安全 保高质量发展_热点
- 风靡全球20年 “最美奔驰轿车”CLS宣布停产_讯息
- 电源撑得住吗?AMD CPU功耗未来将达600W 比Intel还高100W 视讯
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
全球球精选!C++ | const修饰的变量
01.const 概述
const 单词字面意思为常数,不变的。它是 c/c++中的一个关键字,是一个限定符,它用来限定一个变量不允许改变,它将一个对象转换成一个常量。
const int a = 10;A = 100; //编译错误,const 是一个常量,不可修改
02.C/C++中 const 的区别
2.1 C 中的 const
常量的引进是在 c++早期版本中,当时标准 C 规范正在制定。那时,尽管 C 委员会决定在 C 中引入 const,但是,他们 c 中的 const 理解为”一个不能改变的普通变量”,也就是认为 const 应该是一个只读变量,既然是变量那么就会给 const 分配内存
,并且在 c 中 const是一个全局只读变量,c 语言中 const 修饰的只读变量是外部连接
的。
(资料图)
如果这么写:
const int arrSize = 10;int arr[arrSize];
看似是一件合理的编码,但是这将得出一个错误。 因为 arrSize 占用某块内存,所以 C编译器不知道它在编译时的值是多少?
2.2 C++中的 const
在 c++中,一个 const 不必创建内存空间,而在 c 中,一个 const 总是需要一块内存空间。在 c++中,是否为 const 常量分配内存空间依赖于如何使用。一般说来,如果一个const 仅仅用来把一个名字用一个值代替(就像使用#define 一样),那么该存储局空间就不必创建
。如果存储空间没有分配内存的话,在进行完数据类型检查后,为了代码更加有效,值也许会折叠到代码中。
这就是C++中的
常量折叠
:指const变量(即常量)值 放在编译器的符号表中 ,计算时编译器直接从表中取值,省去了访问内存的时间,从而达到了优化
。
不过,取一个 const 地址, 或者把它定义为 extern,则会为该 const 创建内存空间。
在 c++中,出现在所有函数之外的 const 作用于整个文件(也就是说它在该文件外不可见),默认为内部连接,c++中其他的标识符一般默认为外部连接
。
2.3 C/C++中 const 异同总结
1)内存占用方面
C语言的const修饰的变量均占有内存空间;
C++的const修饰的变量有时占用内存空间,有时不占用内存。
①C语言的const修饰的变量不论是全局变量还是局部变量,均占用内存。
#includeconst int a = 10; //存储在静态区(全局区),占用内存void test01(){int *p;// a = 100; // error: 全局的const不能直接修改printf("a = %d\n", a);p = (int *)&a;// *p = 100; // error: 全局的const不能间接修改printf("a = %d\n", a);}void test02(){ const int b = 20; //存储在栈区,占用内存 int *p;// b = 200 // error: 局部的const不能直接修改 printf("b = %d\n", b); p = (int *)&b; *p = 200; // 局部的const可以间接修改 printf("b = %d\n", b);}
②C++的const修饰的变量有时占用内存空间,有时不占用内存。
#includeusing namespace std;const int aa = 10;void test01(){int* p;/* 在编译阶段,编译器将转为 cout << "aa=" << 10 << endl; */cout << "aa=" << aa << endl;const int bb = 20;p = (int*)&bb; // 此时会为bb分配内存*p = 300;/* 在编译阶段,编译器将转为 cout << "bb:" << 20 << endl; */cout << "bb:" << bb << endl;cout << "*p:" << *p << endl;cout << "bb的地址=" << &bb <
输出:
aa=10bb:20*p:300bb的地址=0019FED4p指向的地址=0019FED4
小结:C++的const修饰的变量有时占用内存空间,有时不占用内存(发生常量折叠,且没有对变量进行取址运算时
)。
对于基础数据类型,如果用一个变量初始化 const 变量,如果 const int a= b,那么也是会给 a 分配内存。
#includeusing namespace std;int main(){int b = 10;const int constA = b;int* p = (int*)&constA;*p = 300;cout << "constA:" << constA << endl;cout << "*p:" << *p << endl;cout << "constA的地址=" << &constA <
输出:
constA:300*p:300constA的地址=0019FF28p指向的地址=0019FF28
③扩展:volatile关键字
C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量。volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。声明时语法:int volatile vInt;当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。
而且读取的数据立刻被保存。
即:用
volatile
声明类型变量的时候,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。
#includeusing namespace std;void test01(){int* p;volatile const int bb = 20; //volatile: 禁止优化p = (int*)&bb; // 此时会为bb分配内存*p = 300;cout << "bb=" << bb << endl;cout << "*p=" << *p << endl;cout << "bb的地址=" << &bb <
注:C++中,为什么对volatile的变量进行取地址操作,会出现1这样的数值,而不是正常的逻辑地址?
https://www.zhihu.com/question/411562530
2)跨文件访问方面
C语言的const修饰的全局变量默认为外部连接。
C++的const修饰的变量默认为内部连接。
这是因为C++的const修饰的变量默认为内部连接,即作用域仅限当前文件。
如果想让 c++中的 const 具有外部连接,必须显示声明为: extern const int data = 99;
关键词:
全球球精选!C++ | const修饰的变量
焦点快播:谈谈Spring IOC容器的注入方式
换皮系统实锤了?Win11曝出Win8老版本残留
新动态:被观众喷爆!《埃及艳后》成网飞评价最差剧集之一
今日热讯:1032km续航全球量产车第一!极氪001千里续航套装版开启交付
天天快消息!世卫组织建议勿用非糖甜味剂控制体重:会导致2型糖尿病、甚至死亡
苹果Siri即将大升级!体验巨变|全球简讯
博主每天都在纠结选小米13 Pro还是13 Ultra!雷军给出答案
世界最新:美国“悔棋翻盘”破坏多边经贸秩序——起底美国贸易战反智本质述评之三
全球快看点丨统计学习方法笔记-感知机学习方法
今日热文:易基因:多组学关联分析及组学分子实验验证方法(表观组+转录组+微生物组)|干货系列
AHB2APB bridge IP使用
头条:中秋节快乐贺词简短四字_中秋节快乐贺词
弯道超车?无需光刻工艺的处理器来了:成本暴降
重大突破!全国首例心脏不停跳人工心脏植入:患者恢复良好-世界视点
每日报道:21人合买 中2574万彩票摊主已转让摊位:4万就转手
iQOO Neo8系列将支持Wi-Fi 7:峰值速率高达3.6Gbps 焦点信息
网传迪士尼乐园将落户成都 官方回应:暂未收到选址情况 世界时讯
抓好消防安全 保高质量发展_热点
@Getter cheated me
关于忘记kubernetes-master节点的token以及让新node节点加入k8s集群的命令的处理方法
风靡全球20年 “最美奔驰轿车”CLS宣布停产_讯息
电源撑得住吗?AMD CPU功耗未来将达600W 比Intel还高100W 视讯
广东河源2023年1月自考延期考试成绩查询时间:5月11日15时
C#异步方法async/await的三种返回类型
PhotoShop的平替: GIMP
雪榕生物:雪榕源已于2023年第一季度推出产品,具体您可以通过抖音“雪榕膳食旗舰店”详细了解
准点下班被辞退仲裁胜诉 当事人:为讨领导开心的无效加班真没必要
用上“最黑的黑” 比亚迪汉DM-p战神版实拍:3.7秒加速的性能怪兽 世界热门
热点聚焦:喝的人越来越少!星巴克中国最贵单品更换原料但不官宣 网友炮轰降本不降价
国产Chiplet小芯片工艺稳定量产 国际客户4nm工艺产品已出货 焦点日报
微软690亿美元收购动视暴雪交易获欧盟批准
阿里云数据库ClickHouse产品和技术解读
高效联调,可靠发布!华为云推出CodeArts Release发布管理服务
玩转Zabbix智能告警:降噪、排班、认领、升级、IM协同
机器学习服务语音合成,解锁智能养娃新趋势|速看
注册会计师报考费用2023
【新要闻】年轻人越来越吃不起鸭脖?女子武汉坐高铁满车人都在啃鸭脖 直言被馋哭
出海国产手游战绩:米哈游超腾讯 《原神》第一、《崩坏:星穹铁道》第七 天天快看点
管住嘴果然有用!科学家:保持饥饿感或可延缓衰老 每日时讯
世界观点:国产电动车反攻欧洲 法国急忙出手限制:砍掉3.8万元补贴
迪卡侬双11促销虚标原价被罚!网友大赞:消费者苦假促销久矣-每日头条
史上最全 Activiti 学习教程,一文搞定最强工作流引擎! 天天快消息
可观测性三支柱?远不止此!|全球快播报
每日观察!Linux-特殊权限设置(SUID、SGID、SBIT)
智能补全音源损失!索尼蓝牙耳机暴降130元
“北向互换通”上线 人民币国际化再提速-资讯
国家统计局:4月份社会消费品零售总额同比增长18.4%
当前时讯:罕见!抗阿尔茨海默病“第二人”出现
速降35℃!黑鲨冰封散热背夹3 Pro预售 首销199元_当前热议
世界今日讯!4000元档良心所在 Redmi Book 14处理器公布:45W标压12代酷睿
16GB大内存稳了!iQOO Neo8 Pro官宣搭载性能铁三角 最资讯
世界新动态:就看这款了!蔚来全新ES6上市定档:“高端中型SUV天花板”登场
蔚来起诉网红索赔500万!公关总监:绝不姑息造谣、污蔑行为
尘埃歌词我的爱像尘埃在线试听 尘埃歌词我的爱像尘埃
pg_enterprise_views安装及使用
JS中的偏函数
虚拟机网络配置_全球资讯
天天即时看!华东医药:5月15日融资买入1046.79万元,融资融券余额9.64亿元
暴汗燃脂!腾讯首款体感健身应用《舞动极光》发布:手机+电视就能玩
速读:一键开盖 耐热抗摔:哈尔斯Tritan材质单手开盖水杯14.9元发车
《王者荣耀》第四款敦煌皮肤、八周年限定皮肤都来了_环球热门
多地气温超36℃ 今夏还会“热哭”吗?专家称没有去年热 今日热闻
技术不成熟 无人驾驶汽车在旧金山“疯狂搞事”:还拦不住-快消息
时讯:国家网信办:集中清理仿冒新闻单位、新闻主播账号10.7万个
狂神说ngnix笔记(附md文件下载链接)
前沿资讯!Upstart (UPST.US)向私人信贷商店Castlelake出售40亿美元消费分期贷款 股价涨超20%
今晚油价或迎年内“最大跌幅”!95号汽油有望回归7元时代
天天热门:当事人回应10万元买8套房:是特列但房价确实便宜 我买房只看价格
当前快报:50TB仅398元!国产小龙盘升级:新增联网模式AI聊天
张艺谋《满江红》最终票房45.44亿 位列中国影史第6位
焦点简讯:中银香港完成首批“北向互换通”交易
【读财报】科创板一季度业绩速览:近七成公司实现盈利 机械、通信等行业表现突出 今日聚焦
天天看点:我市统计承诺实践创新获评国家优秀案例
每日观察!俞敏洪:中国的农村不能凋敝 不能让农民打理农村
云南13亩小岛1元起拍引关注:网友直呼可以当岛主了
32岁女生相亲角因条件高被男子怼哭 上海有房、5万彩礼:网友吵翻
观速讯丨中国影史第10!《流浪地球2》最终票房40.29亿 打破34项影史纪录
环球信息:国产新SSD发布:基于RISC-V架构 全面兼容国产自研系统、处理器平台
学系统集成项目管理工程师(中项)系列22a_信息化知识(上)
2022年01月06日最新发布:索尼Xperia1II5G售价1199欧元
广东情侣住酒店凌晨被人开门闯入 服务员记错房间号:网友直呼可怕
当前焦点!骨灰级技术大牛左耳朵耗子(陈皓)突发心梗离世。
基于Arduino和ESP8266的JSON数据获取与解压之和风天气-全球快讯
Cryptohack wp (GENERAL篇)|世界热消息
使用策略模式重构 if/elseif/elseif
电磁炉辐射范围多少米_电磁炉对孕妇有辐射吗
外卖平台热销榜第一店铺环境简陋:画面斑驳不堪
环球今日报丨终极能源!盖茨、贝索斯押注的可控核聚变:中国公司跟进了
【独家焦点】丰田要给纯电车装手动挡!我看它是真急了
老外上网课最喜欢用的电脑 现在却变成了电子垃圾
高温来袭!北方30℃以上范围连成一片|全球焦点
今日快看!中国东方教育(00667.HK):5月15日南向资金增持4.35万股
焦点观察:作为这家数码潮牌的孵化人,我们真心想推荐一下这个产品
惠普打印机弹出用户使用第三方墨盒警告 称对硬件性能造成威胁
《霍格沃茨之遗》登顶PS4 Fami通日本实体游戏销量榜现已公布
电影《流浪地球2》5月15日结束公映 累计总票房高达40.29亿
网传北京软星技术团队解散 宇峻奥汀游戏制作人谢宗辉回应
报道显示小龙虾价格一路走低 从此前的20元每斤爆降到10元每斤
Bing搜索桌面端市场份额下降 谷歌仍占据行业龙头地位