C++:编译器对被const修饰变量的处理行为(替换)

编译器在处理const变量跟一般变量时的区别 const变量,也就是常量,当某个变量加上const属性的时候,表明这个变量不可修改。 const变量是不可写的,那么我们对于const变量的处理只剩下读操作了。 当我们读一般的变量的时候,会先获取该变量的地址,然后到该地址去取数据,那么对于const变量的读操作是怎么样的呢。 下面代码有助于更好理解const变量: #include<iostream>... 阅读详情

C++:编译器对被const修饰变量的处理行为(替换)

前言

最近博主在写笔试时看到了一道有关被const修饰变量相关题,原题如下:
在这里插入图片描述
对于初学者来说,虽然a是常量,但可以通过指针p的行为来改变a所在空间中的值,所以因该是C,但答案确实D。

原因

上述分析是对的,常变量a可以通过指针p的行为来改变a所在空间中的内容,即a=20;但关键在于const修饰的变量还具有替换的作用,具体表现在编译器在编译程序时,如果看到对常量数据的读取,编译器会直接用常变量中的只来替换!!!

代码验证

以下代码基于VS编译器
【测试代码】:

int main()
{
	const int a = 10;
	int* p = (int*)&a;
	*p = 20;
	cout << "a=" << a << " " << "*p = " << *p << endl;
	return 0;
}

【动画演示】:
请添加图片描述

数学建模 种群竞争模型 学习笔记 模型背景 应用场景 种群竞争模型 例如 s1=0.5,则表示对于供养甲的资源来讲,单位数量的乙的消耗为单位数量的甲的0.5倍,即表示乙对于该资源的占有能力是甲的0.5倍(即竞争力弱) 仿真结果及分析 (1)设置自然增长率 r1=r2=1 (2)改变自然增长率 r1=r2=0.3 (3)修改甲和乙的最大容量 n1=10000, n2=100 (4)修改甲和乙的初始数量 x1=10, x... 阅读详情

相关推荐

51单片机学习(5)-----蜂鸣器的介绍与使用

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计 算机、 打印机、 复印机、 报警器、 电子玩具、 汽车电子设备、 电话机、 定 时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。1.半导体三极管也称为晶体三极管,可以说它是电子电路中最重要的器件。三极管顾名思义具有三个电极。二极管是由一个PN结构成的,而三极管由两个PN结构成,共用的一个电极成为三极管的基极(用字母b表示)。其他的两个电极成为集电极(用字母c表示)和发射极(用字母e表示)。

2302_80260350的博客 1万+

C++中的const

const前言0x00 const修饰变量0.0 const与无参宏比较0.1 const常量必须赋初值0.2 const常量在编译期间值替换0.3 const全局变量0x01 const修饰指针1.0 常量指针与指针常量1.1 const指针的相互转换1.2 const指针初始化1.3 小试牛刀0x02 const修饰引用0x03 const在class中的作用3.0 const成员变量和成员对象3.1 const成员函数3.2 const对象 前言 const关键字其实在C中就有,C中的const可

SHLYYY 1571

鸿蒙OpenHarmony技术:【Docker编译环境】

OpenHarmony为开发者提供了两种Docker环境,以帮助开发者快速完成复杂的开发环境准备工作。独立Docker环境:适用于直接基于Ubuntu、Windows操作系统平台进行版本编译的场景。基于HPM的Docker环境:适用于使用HPM工具进行发行版编译的场景。点击或者复制转到。表1Docker镜像介绍系统类型运行平台Docker镜像仓库标签标准系统(独立Docker环境)3.2小型系统(独立Docker环境)3.2轻量系统(独立Docker环境)3.2。

m0_62167422的博客 1445

const的用法

1. const的用法: 看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。 const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性

Runner2012的专栏 1209

ANSYS Workbench瞬态结构分析(1)时域分析

本文围绕瞬态结构分析展开。首先阐释其概念与理论基础,涵盖控制方程及数值求解方法。接着详述在 ANSYS Workbench 中进行瞬态分析的操作流程,以音叉为例,介绍从创建分析系统、材料定义、几何处理与网格划分,到边界条件与载荷设置、求解器设置及结果后处理的各步骤。之后对分析结果进行探讨,并针对计算不收敛、计算时间过长等常见问题给出调试技巧,旨在为读者提供全面的瞬态结构分析知识与实践指导。

qq_58675332的博客 6530

squirrel校园二手交易平台

squirrel校园二手交易平台 (适合寻找SSM项目练手的你。) 项目起源:   期末的课程设计,三人一组,我和两个舍友,一时起兴,决定做一个校园二手交易平台,一开始兴致与激情满满,可是后期时间上的冲突,让我们三个人对于这个项目有点累。   这个项目刚定题两天,BezosLee由于通过了360的网上在线笔试,收到了360公司的免费培训邀请,要去北京的360总部进行培训一周,值得庆...

K.SHI的博客 5万+

C++中const变量的修改与赋值

title: C++中const变量的修改与赋值 date: 2021-02-25 20:26:16 description: C++中const变量的修改与赋值  出于避免对数据的无意修改的需求,C及C++语言引入了const关键字。与C语言中的const相比,C++中的const具有更丰富的用法。C++中的const除了可用于修饰变量,指针,函数及函数参数,还可用于修饰类对象,类成员,类成员函数等。由于其丰富的用途,往往容易对其产生误解,尤其是与指针用法结合在一起时。下面以一些实例来说明这个问题。 .

qq_38877888的博客 2万+

避坑指南:C# OpenCvSharp调用4K摄像头常见的5个问题及解决方案

本文针对C# OpenCvSharp调用4K高清摄像头时常见的五大难题,提供了详细的解决方案。内容涵盖分辨率设置失效、帧率卡顿、内存泄漏、硬件驱动兼容性以及性能优化实战,帮助开发者高效稳定地处理4K视频流,提升智能安防监控等项目的开发效率。

weixin_29268331的博客 422

C++:const常量的存储位置

前言: 今日看cpp的内存管理这块,偶然想到加关键字const修饰的变量位于哪块内存区?遂在网上一顿搜索和群里与大神交流,得出以下结论。 结论: 1、const修饰的量不是常量,仅仅是个只读量 ...

algsup 2万+

comsol如何实现五厚度的单元模拟?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 470

8、干式变压器

干式变压器的发展,是人类不断挑战材料科学和热物理极限的过程,每一次技术突破,都是在。温度升高,ε_r反而下降(因为分子活动性增强,极化响应变慢)。:固体导热的热阻比液体对流大一个数量级,这是无法逾越的物理规律。Nomex在高温下不是逐渐分解,而是保持性能直到一个临界点。如果 T_a = 40°C,则 T_c = 146.7°C。干式变压器(固体介质分隔):热场、电场、流场(空气)形成三维氢键网络,即使在高温下也能保持机械强度。:不是在现有技术上修修补补,而是寻找新的。仍在H级绝缘允许范围内(≤180°C)

renpeng2692873032的博客 228

C++ const 深度解析:从常量定义到编译器优化,彻底理解 const 的全部用法

fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;const在左侧const在右侧const同时在两侧遇到 const 和指针声明从右往左读类型const 出现在哪?底层 const指向的内容不可修改指针本身可以指向别处顶层 const指针本身不可修改指向的内容可以修改两层 const指针本身不可修改。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1386

UltraScale系列底层结构(3)——URAM概述

在UltraScale+™ 器件中,除了我们在常规熟悉的BRAM资源以外,还额外提供了URAM(UltraRAM)资源。 UltraRAM 是一种单时钟同步操作的高密度存储器,每个 UltraRAM 块可存储 288 Kb 数据,配置为 4K x 72 位的存储单元,其容量是 Block RAM 的八倍。虽然 UltraRAM 内部使用单端口存储单元,但通过在一个时钟周期内顺序执行端口 A 和端口 B 的操作,实现了双端口功能。

apple_53311083的博客 2832

const修饰的变量的存储位置

c语言中const全局变量存储在只读数据段,编译期最初将其保存在符号表中,第一次使用时为其分配内存,在程序结束时释放。 而const局部变量(局部变量就是在函数中定义的一个const变量,)存储在栈中,代码块结束时释放。 在c语言中可以通过指针对const局部变量进行修改,而不可以对const全局变量进行修改。因为const全局变量是存储在只读数据段 而c++中,一个const不是必需创建内...

woainilixuhao的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C++ const 修饰符深入浅出详解

本文将以通俗易懂的方式,循序渐进地讲解 C++ 中 const 修饰符的多种用法,涵盖普通变量、指针、函数参数、成员函数、返回值以及与 constexpr 的结合。通过清晰的示例代码、常见误区分析和最佳实践建议,带你从基础到进阶,彻底掌握 const 的核心原理与应用场景,助你编写更安全、更高效的 C++ 代码

筏的博客 1498

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【C语言指针与const深度解析】:彻底搞懂const修饰变量与指针的核心区别

掌握C语言const修饰指针与变量区别,深入解析常量指针、指针常量与只读变量的应用场景与核心规则。清晰图解语法结构,避免常见错误,提升代码安全性与可读性,值得收藏。

ProceNest的博客 715

「C/C++ 01」volatile关键字 和 修改const修饰的变量

volatile关键字 和 修改const修饰的变量

look_outs的博客 1547

const修饰的变量通过指针修改的问题

const全局变量存放在在全局区的,对其只有读权限没有写权限,因此即使通过指针也不能对其进行修改。const局部变量存放在堆栈区的,可以通过指针对其进行修改。const变量在预处理时会进行宏替换,编译器只对其值读取一次。

qq_61635026的博客 1549

const变量存储内存区域 详解

const int b=1;//静态存储区,的只读页 int c = 2;//静态存储区,读写页 int main(){ const int i=10;//在程序中不能修改,实际上可以用指针简介修改,也就是说没有在内存层面保护,只是在编译期间不能修改该变量。 int *p=(int*)&i; printf("p = %p\n",p); printf("&p = %p\...

weixin_38812277的博客 9055

C/C++面试:const使用总结

1、const约束对象的访问性质:使得对象只能都,不能写:不允许修改对象的值. 2、C++的const变量一旦初始化,就会强制告诉编译器对这块内存的修改无效,不可能去操作这块内存的值。 C的const可以恶意强制操作const对象。 3、C++的const定义的同时必须初始化。 const修饰的变量有内存实体,但是只能是右值,不可以通过强制类型转换修改const的值 4、for (auto i :............

OceanStar的博客 5567

【c++】const关键字

const 是 C/C++ 中用于修饰变量或对象,使其在逻辑上不可修改的关键字。虽然看起来简单,但在不同场景下的行为差异很大,尤其是 C 和 C++ 中的差别更容易让人混淆。

2201_75930743的博客 982

C语言和c++中const修饰的变量

(1)const 修饰的是 int,也就是说 const 修饰的是 p 指向的这个 int 值,假如 *p = a,那么就是我们不能通过 *p 来改变 a,但是我们可以改变指针 p 指向的地址,也就是可以让 p = &b,从而改变 *p 的值。(2)C语言中,当使用 const 定义一个常量的时候,编译器会直接开辟一个内存空间来存储该常量,每次存取的时候都是从这个内存空间中存取,因此可以取得 const 变量的地址,然后用这个地址来间接修改 const 变量。(这个是不能修改的,因为存储在只读数据段中)。

LRome的博客 208

搬砖:编译器在处理const变量跟一般变量时的区别

编译器在处理const变量跟一般变量时的区别 2018年05月16日 12:19:52 米沙子418 阅读数:200 转自:https://www.cnblogs.com/TaigaCon/archive/2012/12/19/2824355.html const变量,也就是常量,当某个变量加上const属性的时候,表明这个变量不可修改。 const变量是不可写的,那么我们对于con...

hunter 191

C++ const修饰符对值类型变量的影响

前言/引言: const一直被称为“常量”修饰符,被修饰的对象具有“不可更改”的特性,较为安全的保护了对象不被无意中修改。本帖将对const修饰符在值类型变量上的作用进行详细的分析。 从网上的其他资料中显示,const在C语言中是“伪修饰符”,其实质上还是变量,其“常量”的特性只在编译阶段由编译器进行判断,而使用强制内存修改的方式依然可以更改其值;而const在C++中则更安全,C++会在取一变量地址的时候获取到一个临时地址,这个地址不直接指向目标变量,从而保证了目标变量不被针对性的更改。 然而,经过我

qq_19591171的博客 240

【C++】【C++的常变量取地址问题(对比C的不同)】const修饰的常变量&volatile修饰用法详解(代码演示)

主要介绍了常变量取地址会出现的问题,以及如何用volatile修饰常变量,附带代码演示

YYDsis的博客 621

c++语言const是什么意思,c++中const关键字

c++中const关键字const是一个C++语言的限定符,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。下面是小编分享的c++中const关键字,一起来看一下吧。define与const的区别1.define作用在预处理时,是简单地字符替换2. const作用在编译时,具有类型检查的功能3. const必须进行初始化常量指针与指针常量#include usi...

weixin_35284593的博客 5075
上一篇: C++:多态究竟是什么?为何能成为面向对象的重要手段之一?
下一篇: C++:二叉搜索树模拟实现(KV模型)
小白debug~
小白debug~ 新星创作者: C/C++技术领域 新星创作者: C/C++技术领域
博客等级 码龄4年 3510粉丝 128原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白debug~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值