C++深度解析教程笔记6-const常量引用数组

news/2024/5/19 15:16:46

C++深度解析教程笔记6

  • 第12课 - const常量&引用数组
    • 实验-const常量的判别
    • 实验-引用作为数组元素
    • 小结

本文学习自狄泰软件学院 唐佐林老师的 C++深度解析教程,图片全部来源于课程PPT,仅用于个人学习记录

第12课 - const常量&引用数组

在这里插入图片描述
在这里插入图片描述

实验-const常量的判别

#include <stdio.h>int main()
{const int x = 1;//在符号表,是常量const int& rx = x;//rx是x的别名,对应为x分配的内存空间,rx是只读变量int& nrx = const_cast<int&>(rx);//去除只读属性,目标类型只能是指针或者引用nrx = 5;printf("x = %d\n", x);printf("rx = %d\n", rx);printf("nrx = %d\n", nrx);//三个变量地址是一样的printf("&x = %p\n", &x);printf("&rx = %p\n", &rx);printf("&nrx = %p\n", &nrx);//可变的volatile const int y = 2;//2没放符号表,放在内存里int* p = const_cast<int*>(&y);//目标类型指针*p = 6;//修改指针指向的值printf("y = %d\n", y);//y改变了,证明了volatile修饰的变量放到了内存里printf("p = %p\n", p);//y的地址const int z = y;//z是只读变量p = const_cast<int*>(&z);*p = 7;printf("z = %d\n", z);//变化了,说明了使用变量初始化的const常量是只读变量printf("p = %p\n", p);char c = 'c';char& rc = c;const int& trc = c;//const int &  <---  char  类型不同的引用会生成新的只读变量,跟c毫无关系rc = 'a';//更改引用 的值printf("c = %c\n", c);printf("rc = %c\n", rc);printf("trc = %c\n", trc);printf("&c = %p\n", &c);printf("&rc = %p\n", &rc);printf("&trc = %p\n", &trc);return 0;
}
/*
x = 1
rx = 5
nrx = 5
&x = 0060FEE4
&rx = 0060FEE4
&nrx = 0060FEE4
y = 6
p = 0060FEE0
z = 7
p = 0060FEDC
c = a
rc = a
trc = c
&c = 0060FEDB
&rc = 0060FEDB
&trc = 0060FEE8*/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验-引用作为数组元素

#include <stdio.h>int a = 1;struct SV
{int& x;int& y;int& z;
};int main()
{int b = 2;int* pc = new int(3);SV sv = {a, b, *pc};int &array[]={a,b}; error: declaration of 'array' as array of references//int& array[] = {a, b, *pc}; // &array[1] - &array[0] = ?  Expected ==> 4
// error: declaration of 'array' as array of referencesprintf("&sv.x = %p\n", &sv.x);printf("&sv.y = %p\n", &sv.y);printf("&sv.z = %p\n", &sv.z);
//&sv.x = 0000000000403010
//&sv.y = 000000000061FE14
//&sv.z = 0000000000DA6E90delete pc;return 0;
}

小结

在这里插入图片描述


http://www.mrgr.cn/p/13214755

相关文章

C语言之位操作符:<<、>>、、|、^、~,以及原码反码补码和例题详解

目录 前言 一、原码、反码、补码 二、移位操作符 三、位操作符&#xff1a;&、|、^、~ 四、经典例题分析&#xff1a; 总结 前言 本文将详细介绍C语言中左移操作符<<&#xff0c;右移操作符>>&#xff0c;按位与&&#xff0c;按位或|&#xff0c;按位异或^…

如何查找Lenovo XClarity Controller 的 MIB 文件

描述 本文介绍了为运行Lenovo XClarity Controller (LXCC) 的Lenovo服务器查找和下载 MIB 文件的过程。 程序转至数据中心支持。 lenovo .com 。 在搜索栏中,输入Lenovo服务器型号名称,然后单击自动搜索结果中正确服务器下的“下载” 。注意:在此示例中,将使用 SR650。 在“…

直播话术核心逻辑,学了轻松提高销量!沈阳直播运营培训

直播话术到底该怎么说&#xff1f; 产品话术说得好&#xff0c;直播间一次就能卖出去上万件产品&#xff1b;产品话术说不好&#xff0c;直播间半个月也卖不出去10件产品。 我们上次就有跟大家说过产品话术的具体流程&#xff0c;但发现还有更多朋友居然还是不能够很好地完成一…

allure功能使用-添加链接linktestcaseissue

1.执行指定测试用例时,在测试方法前添加注解@allure.link跳转到执行地址: 在HTML报告可看到跳转信息: 2.执行指定测试用例时,需要知道测试案例所在代码仓库地址时,在其方法前添加注解@allure.testcase跳转仓库地址(用于代码走读): 3.执行指定测试用例时,需要将该用例…

云原生周刊:Terraform 1.8 发布 | 2024.5.6

开源项目推荐 xlskubectl 用于控制 Kubernetes 集群的电子表格。xlskubectl 将 Google Spreadsheet 与 Kubernetes 集成。你可以通过用于跟踪费用的同一电子表格来管理集群。git-sync git-sync 是一个简单的命令,它将 git 存储库拉入本地目录,等待一段时间,然后重复。当远程…

OpenCV如何实现背投(58)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV直方图比较(57) 下一篇&#xff1a;OpenCV如何模板匹配(59) 目标 在本教程中&#xff0c;您将学习&#xff1a; 什么是背投以及它为什么有用如何使用 OpenCV 函数 cv::calcBackP…

JAVA------基础篇

java基础 1.JDK JDK :java development kit JRE&#xff1a;java runtime environment JDK包含JRE java跨平台&#xff1a;因为java程序运行依赖虚拟机&#xff0c;虚拟机需要有对应操作系统的版本&#xff0c;而jre中有虚拟机。 当你想要在Linux系统下运行&#xff0c;则需要…

关于Docker的数据管理

文章目录 一、Docker的数据管理1、数据卷1.1 数据卷定义1.2 数据卷配置 2、数据卷容器2.1 创建数据卷容器2.2 使用--volume-from来挂载luck02 二、端口映射三、容器互联1、创建容器互联2、进入luck02测试&#xff08;ping 容器名/别名&#xff09; 四、Docker镜像的创建1、基于…

二叉树进阶:二叉搜索树、平衡二叉树、KD树(实现KNN算法的快速寻找k个邻居)

二叉搜索树二叉搜索树又称为二叉排序树、二叉查找树。请记住,本篇所介绍的所有树,都是二叉搜索树,也就是说都用到了二分查找的思想。二叉搜索树的特征:每个结点的左结点都小于结点本身,右结点都大于结点本身。用中序遍历来遍历一棵二叉搜索树,结果必然是有序的。 时间复杂…

岩土工程监测中振弦采集仪的布设方案及实施步骤简析

岩土工程监测中振弦采集仪的布设方案及实施步骤简析 岩土工程监测中,河北稳控科技振弦采集仪是一种常用的地下水位和土层压缩性监测工具。它通过采集振弦的振动信号来确定地下水位和土层的压缩性,为岩土工程的设计、施工和监测提供重要的数据支持。下面将对振弦采集仪的布设方…

活动回放 | 如何进行全增量一体的异构数据库实时同步

如何在不影响并保持现有业务系统正常运转的前提下,实现数据向新业务系统的持续同步,并保障异构数据同步的完整性、准确性、一致性、时效性。以 AI 领域为代表的新技术不断涌现,新的应用风口也逐渐清晰。为了加紧跟上技术发展的步伐,越来越多的企业开始着手,对仍以传统关系…

使用XPTable控件展示多窗口数据(XPTable控件使用说明七)

我给我的应用程序找到一个新的能力&#xff0c;因为有DEMO程序界面有6个窗口&#xff0c;我使用了2个显示器&#xff0c;一起来显示。

(前++) 和 (后++)的练习题

打印也是一种运算,因此是先打印出5,再-1。每天进步一点点,快乐生活多一点。

编程入门(六)【Linux系统基础操作一】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 &#x1f525;前言&#x1f680;Linux操作系统介绍与环境准备Linux操作系统介…

LVS/NAT工作模式介绍及配置

1.1 LVS/NAT模式工作原理 LVS&#xff08;Linux Virtual Server&#xff09;的网络地址转换&#xff08;NAT&#xff09;模式是一种在网络层&#xff08;第四层&#xff09;实现负载均衡的方法。在NAT模式中&#xff0c;Director Server&#xff08;DS&#xff09;充当所有服务…

11.IO 流

1.IO 流引入 概述:以应用程序为参照物,读取数据为输入流(Input),写数据为输出流(Output),大量输入输出数据简称 IO 流 原理:2.IO 流的分类 读写的文件分类二进制文件:打开后是乱码,或者是 16 进制,无法生成文件的文件 文本文件:打开文件内容可以直接阅读IO流读取数…

人大金仓数据库使(cai)用(keng)记录

最近一直在用人大金仓做项目,相关的文档相比其它流行的所谓“主流”数据库来说还是少了点,记录一些开发过程中遇到的问题。 1.数据库的模式(database_mode)在实例创建后就确定好了的,不可更改。想要改变模式只能重新init一个实例。oracle 模式下,实例目录下kingbase.conf…

【千帆平台】使用AppBuilder三步手搓应用创建精准多轮对话agent之K12互动式练习题

欢迎来到《小5讲堂》 这是《千帆平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言创建应用应用头像应用名称应用描述角色指令能力扩展开场白 …

关于聊天机器人的阅读笔记

目录智能对话机器人的类型知识问答机器人任务型对话机器人闲聊机器人 智能对话机器人的类型 知识问答机器人 主要应用场景包括智能客服、政务咨询、知识获取等 其主要实现方式是预定义大量的问题和答案存储在知识库中,当用户发送问题时,该程序会对该问题和知识库的问题进行对…

在Mac上恢复已删除文件夹的最佳方法

“嗨&#xff0c;我从我的Mac Documents文件夹中删除了很多文件夹。已删除的文件夹包含我的重要文档和文件&#xff0c;是否可以取回它们&#xff1f;垃圾桶已被清洁软件清空。如何在我的Mac上恢复已删除的文件夹&#xff1f; 当您在 Mac 上删除 1 或 2 个文件夹时&#xff0c…