认识C++《共、枚、指1》
目录
前言:
1.共用体的基本知识
2.匿名共用体
3.枚举
3.1设置枚举值
3.2枚举的应用场景
3.3枚举变量的取值范围
4.地址和自由存储空间
5.指针的思想
6.指针的声明和初始化
前言:
指针内容比较多,还需要再出一篇。久等了!!我看了我的创作记录,居然有两天没写博客,顿时就毛了,其实有点原因就是因为学校有作业,我又不想写,然后又在影响着我的心情,因为有算平时分嘛,然后一天下来,效率低的离谱,哭死。好了,话不多说,开学!
1.共用体的基本知识
共用体也叫联合体,使用关键字union。说到这个你可以联想起结构体的关键字是struct,它们都是复合类型,用关键字来创建一种类型。

共用体是什么呢?听名字,共用是共同使用一块内存空间的意思。我们这里使用struct创建了结构体,结构成员里有union创建的共用体。

假如一个共用体的成员是一个double变量和一个int变量,它们的起始地址是同一块地方。

我们需要知道的一点是,使用共用体在一定时间内只能表示一个成员。id_val有时是长整型,有时是字符数组。因为有空间是重叠的,当id_val.id_num使用整型的时候,把id_num的值改了,in_char[20]成员的值也会发生改变,从内存上看就是这样子的。
但是我们不妨可以展望一下,当我们把量子应用到计算机里的时候,能不能实现共用体成员同时存在且正常使用互不干扰呢?maybe~
2.匿名共用体

匿名共用体和匿名结构体也是非常相似的,没有了名称,也就不能用来创建相应类型的变量,除非在声明的时候就创建变量。
补充:对于底层开发多数用的是C和C++语言。什么是底层呢?请看图

3.枚举
枚举是一一列举的意思,生活中,有很多东西是可以完全列举出来的,比如性别,三原色,四大名山等等,在计算机中,使用枚举来表示,当然枚举的作用主要是用在switch语句中的case的标签入口。

枚举的关键字是enum,和结构、共用都很像,用关键字创建一个名称,这个名称可以用来创建相应类型的变量。在C语言中我们在创建枚举量如Red、Blue、Yellow的时候,不是在一行上,而是分几行,其实都可以的。需要与结构、共用区分的是,枚举在列枚举量的时候,是用逗号分隔开的,不是分号。
3.1设置枚举值

需要知道的是,后一个枚举量的值,一定是前一个枚举值+1。但是我们给前后两个枚举量都显性设值除外。
3.2枚举的应用场景

在C++早期版本,只能将int值(或提升为int的值比如char、short)赋给枚举量。但这种限制取消了,现在可以使用long甚至long long类型的值,但不能是浮点数。
3.3枚举变量的取值范围

ok,到这里,我们就讲完共用体和枚举了,重头戏来啦,认识指针。
4.地址和自由存储空间
在了解指针之前,需要了解计算机的内存相应的知识。我们知道,在存储数据的时候,需要空间把数据存起来,这些空间就是一个个内存单元,每个大小是1个字节,有地址线给内存单元编号,这个编号就是内存单元的地址,在计算机中独一无二。

我们在main函数里是先写int a;再写double b;我们看到内存编号,b的地址比a的地址低,以前我们可能会认为,谁先执行,谁先创建,放在低地址的应该是a变量,紧接的就存b变量,从这个我们可以看出:b不仅是存在低地址的,而且它们变量a和变量b还不紧邻(b的地址54,a的地址64相差了16),在不同系统中,存法是不一样的---自由的存储空间。地址是由十六进制表示的!
5.指针的思想

指针实质上就是地址。从表面上来看 int* p_data = &data; int* 表示类型,把data变量的地址初始化给p_data指针,p_data与&data没有无异。指针变量是用来存放地址的。
补充:使用常规变量的时候,值是指定的量,int a = 5;5是a指定的值,说a就是在说5,而&a是派生量。处理指针变量的时候是相反的,int* pa = &a;pa指定的值是a的地址也就是&a,用*(解引用)对pa解引用得到的是a的值,也就是*pa等于5。

两者是相互的,a是值,&a变地址,pa是地址,*pa变值。
6.指针的声明和初始化

| 指针类型 | 指针类型的作用 |
| int* | 决定了访问多大的空间和怎么取数值 |
| int* | 在指针运算的时候,决定跳过多少个内存单元 |
简单来说就是,什么样的官,权利就是什么样的,可不敢越界了。主要与同层的人交流,每次交流的时候,差不多都是同类型的人。意即:int*只能访问四个字节的空间,加一个值的时候,就跳过一个整型的空间大小,*int访问的还是一个整型空间。
指针的内容真的很多,终于有时间更新了,虽然内容不是很多,也是博主 挤时间出来写的,
如果你觉得不错的话,可以点点赞!你的支持是我更新的动力
希望你读完有所收获!!!
相关文章:
认识C++《共、枚、指1》
目录 前言: 1.共用体的基本知识 2.匿名共用体 3.枚举 3.1设置枚举值 3.2枚举的应用场景 3.3枚举变量的取值范围 4.地址和自由存储空间 5.指针的思想 6.指针的声明和初始化 前言: 指针内容比较多,还需要再出一篇。久等了!!我看了我的…...
vim 一键配置
PS:本文是为了以后为了方便,做备忘的,今天用的时候找了半天很麻烦。 vim编辑器一键配置 在非root用户下执行上面的语句即可,不要在root用户下直接安装! 安装的时候需要输入root用户的密码,请找您的服主要一…...
如何成为一名成功的 PHP 开发者
当今的网络应用开发市场,PHP 一直是其中最受欢迎的语言之一,许多优秀的网络应用程序都是由 PHP 开发人员设计和开发的。如果你想成为一名成功的 PHP 开发者,以下是几个关键步骤: 1. 学习基础知识 首先,你需要掌握 PH…...
UHD安装教程
UHD Universal Hardware Driver,即USRP驱动。 UHD,Windows平台安装教程 uhd驱动安装 http://files.ettus.com/binaries/misc/erllc_uhd_winusb_driver.zip 安装LibUSBx http://files.ettus.com/binaries/uhd/latest_release 下载默认C盘 环境配置 将…...
Unity和UE有啥区别?哪个更适合游戏开发
游戏制作软件中最著名的两个游戏引擎是 Unity 和 Unreal Engine。从独立游戏到大型工作室,许多游戏开发商都在使用它们。如果你打算从事游戏行业工作,你肯定曾经问过自己“我的游戏应该使用 Unity 还是 Unreal Engine?” ” 让我们来了解和比…...
红队内网靶场
文章目录开篇介绍靶场介绍靶场下载以及配置Tomcat Get Shell突破DMZ防火墙拿下域内成员机器将内网机器上线到CS使用Adfind侦察子域信息控制子域DCRadmin登录子域进行权限维持(白银票据/ACL)子域bloodhound获取父域信息分析子域Krbtgt密钥创建跨域金票Dcsync父域PTH父域DC准备打…...
如何合并多个升序链表?
前言 本文主要介绍如何将多个小的升序链表合并一个大的升序链表。 需求描述 给出K个升序链接,要求把这K个升序链表合并成一个,并且这个链表也是升序的。 例如:A [1,5,6], B [2,3,8], C [4,4,9] 将这3个链表合并成一个链表D…...
23上半年信息系统项目管理师新老教程兼顾使用备考策略
在离考试仅有50多天的时候,软考办发文:“为方便报考信息系统项目管理师的考生进行复习备考,2023年上半年信息系统项目管理师考试第3版、第4版教程兼顾使用”。 其实软考办发布这样一条信息,也是为了照顾那些在新版发布以前按第…...
Linux环境搭建SVN服务器并实现公网访问 - cpolar端口映射
文章目录前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6.2 …...
仿牛客网社区Web开发项目代码逐行精读(更新中)
仿牛客网社区Web开发项目怎么看项目?如何调试项目前瞻技术架构项目亮点开始看代码LoginControllerDiscussPostController怎么看项目? pom.xml看技术架构resource看配置文件,这个项目是前后端不分离的以调试为导向,从前端入手检查…...
5G NR调制阶数与EVM关系以及对系统SNR要求分析
移动通信技术对数据传输速率要求越来越高。一种提高传输速率的思路是使用更高阶的QAM 调制方式,例如5G NR 的256QAM PDSCH,微波的1024QAM,2048QAM和4096QAM 调制。更高阶的QAM 调制方式对系统也提出了更高的要求。例如某个系统的EVM 测试结果…...
【NAS群晖drive异地访问】远程连接drive挂载电脑硬盘「内网穿透」
文章目录前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用3. 结语转发自CSDN远程穿透的文章:【群晖…...
react:hooks为什么不能写在条件语句里
背景 最近朋友在面试,说面试官问到了一个问题不会,说为什么 react hooks为什么不能写在条件语句里,今天我们来研究一下这个问题。 我们在来简单实现一个 useState: const reRender () > {stateIndex -1 ReactDOM.render(&…...
模型优势缺陷整理
(1)BERT 1. 计算资源消耗:bert模型是一个相对较大的模型,具有数亿个参数。因此,为了训练和使用bert模型,需要大量的计算资源和时间。 2. 学习不足问题:尽管bert模型在大规模语料库上进行了预训…...
编写猫咪相册应用 HTML
文章目录1. 标题元素标签2. p元素用于在网站上创建一段文本3. 注释4. 页面主要部分标识标签5. 通过使用img元素来为你的网站添加图片6. 使用锚点元素(a)链接到另一个页面7. 使用 section 元素将照片内容与未来的内容分开8. 无序列表(ul)元素,列表项(li)元素在列表中…...
基于Arduino与LabVIEW的远程家庭监控系统
在基于Arduino与LabVIEW的远程家庭监控系统中,Arduino Uno控制器需要完成以下功能:1)通过W5100网络模块接收并判断命令,采集和传输温度、煤气浓度、热释电传感器的数据,并通过W5100网络模块上传给LabVIEW软件。2&#…...
使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例
一、FRP简介 FRP,即快速反向代理技术(fast reverse proxy)。本文的FRP程序是基于github开源项目GitHub - fatedier/frp。当前,该程序可实现:“将位于 NAT 或防火墙后面的本地服务器暴露给互联网”。它目前支持 TCP 和…...
d跨语言链接优化
原文 使用LDC的(LTO)链接时优化的简短文章,包含演示了如何提高程序性能的简单示例.因为LTO在LLVMIR级别工作,因此可跨越C/D语言优化! 重要提示:LDC/LLVM的LTO在窗口上不可用. 链接时优化 (LTO)链接时优化是指链接时的程序优化.链接器提取所有目标文件在一起,并合并到一个程序…...
【Linux】-- 进程概念的引入
目录 硬件 冯诺依曼体系结构 冯诺依曼体系结构推导 重点概念 网络数据流向 软件 操作系统(Operator System - OS) 概念 定位 进程内核数据结构PCB(task_struct) 通过系统调用创建进程-fork初始 fork基本用法 使用if进行分流 查看运行效果 …...
一文看懂“低代码、零代码”是什么?有什么区别?
低代码和零代码近几年热度一直居高不下,乍一看,很容易混淆低代码和零代码开发平台—— 因为它们都是传统开发的替代方案,旨在通过类似于可视化编程的功能加速软件开发过程。 但二者根本不是一回事。从开发人员经验 、目标角色到使用场景&…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
轻量级Docker管理工具Docker Switchboard
简介 什么是 Docker Switchboard ? Docker Switchboard 是一个轻量级的 Web 应用程序,用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器,使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...
python打卡第47天
昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图,展示模…...
计算机系统结构复习-名词解释2
1.定向:在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方,那么就可以避免停顿。 2.多级存储层次:由若干个采用不同实现技术的存储…...
