认识C++《共、枚、指1》

news2024/10/6 2:27:12

目录

前言:

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访问的还是一个整型空间

  指针的内容真的很多,终于有时间更新了,虽然内容不是很多,也是博主 挤时间出来写的,

  如果你觉得不错的话,可以点点赞!你的支持是我更新的动力

  希望你读完有所收获!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库中的视图及三级模式结构

文章目录一、视图二、数据库三级模式结构一、视图 简单地说,视图可以看成是一个窗口,它所反映的是一个表或若干表的局部数据,可以简化查询语句。视图一经定义,用户就可以把它当作表一样来查询数据。 但视图和基本表不同&#xf…

Python算法设计 - Karatsuba乘法

版权声明:原创不易,本文禁止抄袭、转载,侵权必究! 目录一、Karatsuba 乘法二、算法思路三、Python算法实现四、作者Info一、Karatsuba 乘法 当你在纸上做两个数字的乘法时,一般我们都是用小时候学到的方法&#xff1a…

22.SSM-JdbcTemplate总结

目录 一、JdbcTemplate对象。 (1)Spring产生JdbcTemplate对象。 (2)JdbcTemplate常用操作。 (3)知识要点。 一、JdbcTemplate对象。 (1)Spring产生JdbcTemplate对象。 这个是Sp…

AIGC大模型时代下,该如何应用高性能计算PC集群打造游戏开发新模式?

ACT | SIM | ETC | FTG | RAC AVG | RPG | FPS | MUG | PUZ ACT、SIM、ETC、FTG、RAC、RTS、STG、AVG、RPG、FPS、MUG、PUZ、SLG、SPG等游戏类型,需要高性能的计算机来支持运行。为了满足这些游戏的需求,国内服务器厂商不断推出新的产品,采用…

定点数加减运算

定点数加减运算 文章目录定点数加减运算格式相同位宽相同但不同格式运算位宽不同的定点数运算1.转换为S5.10格式的相同位宽2.统一转换为S10.5格式的相同位宽定点数运算可直接通过处理器内置的整数单元实现格式相同 加减法就是对应二进制形式的有符号整数的加减运算 例如 2.71…

[Date structure]时间/空间复杂度

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:数据结构。数据结构专栏主要是在讲解原理的基础上拿Java实现,有时候有C/C代码。 ⭐如果觉得文章写的…

手写锚点,且随着滚动屏幕自动高亮

入上图效果 通过判断几个id对应的dom离滚动区域上方的高度跟滚动区域高度对比高亮锚点 <template><div v-loading"totalLoading" class"define-target-container"><el-radio-group v-model"ucatsType" class"ucats-setti…

AUTOSAR Gateway介绍

概述 熟悉整车电子架构的朋友们都知道,Gateway(网关)在整车网络架构中协调不同物理链路数据的交换,发挥着数据中枢作用。本文为大家介绍AUTOSAR架构中Gateway的应用方式。 在AUTOSAR架构中,Signal、Signal Group或者PDU从一个源总线接收可以发送到一个或相同或不同协议的总…

ChatGPT可以做WebRTC音视频质量性能优化,惊艳到我了

摘要 随着GPT-4的发布&#xff0c;AI的风越吹越旺。GPT-4可以回答问题&#xff0c;可以写作&#xff0c;甚至可以基于一张草图生成html代码搭建一个网站。即构社区的一位开发者倪同学就基于目前在研究的WebRTC QoS技术点对GPT-3.5跟GPT-4进行一场实验&#xff0c;ChatGPT会取代…

HTTP与HTTPS的区别;TLS握手过程

一、HTTP协议与HTTPS 我们都知道当客户端与服务端需要进行通信时&#xff0c;需要根据一套协议来进行通信。 HTTP全程是超文本传输协议&#xff08;Hyper Text Transfer Protocol&#xff0c;HTTP&#xff09;是一个简单的请求-响应协议&#xff0c;它通常运行在TCP之上。它指…

Redis应用问题及解决

目录 一.缓存穿透 1.1 问题描述 1.2 解决方案 二.缓存击穿 2.1 问题描述 2.2 解决方案 三.缓存雪崩 3.1 问题描述 3.2 解决方案 当数据库压力变大&#xff0c;导致服务访问数据库响应变慢&#xff0c;导致服务的压力变大&#xff0c;最终可能导致服务宕机。 一.缓存穿透 1.1 …

Linux编译器——gcc/g++使用

前言&#xff1a; 在上一篇&#xff0c;我们学习了关于文本编辑器 vim 的全部知识&#xff0c;今天给大家带来的是关于Linux编译器—gcc/使用的详细介绍。 本文目录 &#xff08;一&#xff09;温习程序的产生的过程 1、前言 2、程序的产生过程 3、&#x1f31c;初步认识 gc…

深度学习中的算法学习与记忆,利用故事联想帮助大家记忆,每个人都会

大家好&#xff0c;我是微学AI&#xff0c;大家看过我的文章&#xff0c;想必是对深度学习有了一定的了解了&#xff0c;但是对于初学者来说&#xff0c;深度学习中有很多名词和数学知识、原理还是不太清楚&#xff0c;记忆的不牢固&#xff0c;用起来不熟练&#xff0c;今天就…

网络安全 - Web应用防护墙(WAF)

什么WAF Web应用防护墙&#xff08;Web Application Firewall&#xff09;简称WAF。是一种特定形式的应用程序防火墙&#xff0c;用于过滤、监控和阻断通过网页服务的HTTP流量。通过监察HTTP流量&#xff0c;它可以防止利用网页应用程序已知漏洞的攻击&#xff0c;例如SQL 注入…

适配器模式C++用法示例

五.适配器模式一.适配器模式1.原理2.适用场景3.代理、桥接、装饰器、适配器区别4.分类&#xff08;类适配器模式、对象适配器模式&#xff09;二.C程序示例1.类适配器2.对象适配器一.适配器模式 1.原理 适配器模式的原理是将一个类的接口转换成客户希望的另一个接口。适配器模…

权威认证!腾讯云数据安全中台入选工信部商用密码典型应用方案

近日&#xff0c;工业和信息化部、国家密码管理局发布了《关于公布工业和信息化领域商用密码典型应用方案名单的通知》&#xff0c;腾讯云“基于商用密码的数据安全中台”在众多方案中脱颖而出&#xff0c;成功入选工业和信息化领域商用密码典型应用方案名单。 密码可以实现信息…

在springboot项目中使用rocketmq消息队列实战

rocketmq环境搭建 在docket环境下安装部署rocketmq的方法记录在上一篇文章中。 (31条消息) docker环境下搭建rocketmq集群_haohulala的博客-CSDN博客 这种方式不一定是最好的&#xff0c;但是我用这种方式可以成功搭建rocketmq开发环境。 项目架构 我们需要在springboot中…

CSDN 周赛填空题,充满恶意的嘲讽

CSDN 周赛填空题&#xff0c;充满恶意的嘲讽41期的填空题44期的填空题45期的填空题再说题型老顾最近一直在玩 csdn 周赛&#xff0c;没啥想法&#xff0c;就是想票点小玩意&#xff0c;之前从第四十一期开始&#xff0c;题型进行了扩展&#xff0c;增加了填空、判断、单选。扩展…

C#调试与测试 | Assert(断言)

Assert(断言) 文章目录Assert(断言)前言什么是Assert适用场景使用示例检查传入的参数是否为空检查循环变量是否在规定范围内检查方法返回值是否为null结束语前言 今天我要和大家聊聊C#调试和测试中的一种神器——断言&#xff08;Assert&#xff09;。如果你还不知道什么是断言…

nvm-windows的安装使用及踩坑指南

nvm是node的一款版本管理工具&#xff0c;可以简单操作node版本的切换、安装、查看。常规来说&#xff0c;开发中安装一个node版本就够了&#xff0c;但是最近在开发中有的老项目或者一些特定的项目需要来回切换node的版本&#xff0c;不可能手动去卸载掉之前的node版本&#x…