当前位置: 首页 > news >正文

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

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

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

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

http://www.lryc.cn/news/59466.html

相关文章:

  • vim 一键配置
  • 如何成为一名成功的 PHP 开发者
  • UHD安装教程
  • Unity和UE有啥区别?哪个更适合游戏开发
  • 红队内网靶场
  • 如何合并多个升序链表?
  • 23上半年信息系统项目管理师新老教程兼顾使用备考策略
  • Linux环境搭建SVN服务器并实现公网访问 - cpolar端口映射
  • 仿牛客网社区Web开发项目代码逐行精读(更新中)
  • 5G NR调制阶数与EVM关系以及对系统SNR要求分析
  • 【NAS群晖drive异地访问】远程连接drive挂载电脑硬盘「内网穿透」
  • react:hooks为什么不能写在条件语句里
  • 模型优势缺陷整理
  • 编写猫咪相册应用 HTML
  • 基于Arduino与LabVIEW的远程家庭监控系统
  • 使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例
  • d跨语言链接优化
  • 【Linux】-- 进程概念的引入
  • 一文看懂“低代码、零代码”是什么?有什么区别?
  • 【华为OD机试真题】去除多余的空格(java)
  • 【SQL 必知必会】- 第十三课 创建高级联结
  • ios逆向工具有那些
  • 【软件设计师14】UML建模
  • 容器镜像的设计原理
  • arm64异常向量表
  • 【测试面试】吐血整理,大厂测试开发岗面试题(1~4面),拿下年40w...
  • SpringSecurity之权限模块设计
  • 002_双指针法
  • 超实用的 Linux 高级命令,程序员一定要懂
  • AI+明厨亮灶智能算法 yolo