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

C—初阶结构体

若是阁下满意的话,能否一键三连呢!!!!

结构体基础知识:

概念:结构体是一些值的集合,这些值称为变量,变量可以是不同类型

这里我们再想一下之前的数组,数组是一类相同元素的集合,而结构体可以想象成一个系统,这个系统由许多配件共同发挥作用 ,这么说理解了吧

 结构的声明

 结构有一个固定的声明,类型(格式)如下:(其中Arr是自定义的,相当于名字)

我们来看一个错误例子,记住这是错误的啊!

解析:(我们这里先看错误,在初始化里面有正确案例参考)

什么时候判断结构体是否需要数组类型?就比如“int age”,“char name【】”

1:比如名字,是由一个个字符组成,那么char是一个字节,存不下,那么肯定就需要数组来装

2:再比如年龄,年龄是整数4个字节,int刚好4个字节,就不需要再创建数组

3:同理,体重也是如此,float是浮点数类型,只装一个小数而已,也不用担心装不下

下面的那个“p” 是自定义的一个名字(可以理解为名字,就像1,2,3这些,给它取一个名字)

结构体变量的初始化

初始化其实和上面那副图差不多,就是给变量一个值,来初始化,可以理解为

int a = 10;

我们再来看一个例子,主要是打印,加深理解

解析:

 打印时,需要打印的类型与结构体中的变量对应,后面的“p.name”可以理解为“p里面的name”

这样好记一些 

结构体的嵌套使用

理解: 

嵌套使用就是像函数嵌套那样,结构体里面套结构体,理解很简单

我们看个例子

解析:

 我们先看1处:

结构体里面嵌套结构体,就不需要重新去给它命名了,直接对应每个变量,在遇到嵌套时,加一个“{}”就表示进入这个结构体了,再对应输入就行了,参考上面例子理解

 看2处:
比如“pc.p.high”打印嵌套结构体可以理解为“pc里面的p的high”,注意是pc,p自己命名的名字啊

看3处:

 嵌套结构体只需要再给它个声明和名字和编号就行了

结构体的函数调用

 理解:就是把结构体调用到函数里面

我们看一个例子

 

解析:

 这是一种调用方式(接下来我会介绍第二种,因为这种并不好)进行传值调用,需要注意的是,在接受的时候需要用结构体接收,因为你调过去的是一个结构体

我们看第二种方法

 

解析: 

两种打印方式都是进行传址调用,那么在接收的时候需要用结构体指针接收,

我们仔细讲明“struct Ps *p1”,前面的struct作为标志表示它是结构体类型,后面的“Ps”表示传过去的结构体Ps,“*”表示它是结构体指针类型,p1就是用来接收的(一个自定义名字)

我们看打印方式1: 

*p1接收的是pc,所以(*p1).age可以理解为pc.age,只不过是把pc换了个名字成*p1

我们看打印方式2:

 ->就是指向的意思,其它没什么变化,只需要理解这个符号就行了

为什么第二种打印方式更好?(第一种只需要了解就可,知道有这种传参方式)

 函数传参需要压栈,如果传递一个结构体对象时,结构体过大,压栈的开销太大,从而导致性能下降


http://www.kler.cn/a/428919.html

相关文章:

  • C++的auto_ptr智能指针:从诞生到被弃用的历程
  • 计算机毕业设计PySpark+Hadoop+Hive机票预测 飞机票航班数据分析可视化大屏 航班预测系统 机票爬虫 飞机票推荐系统 大数据毕业设计
  • Python 正则表达式
  • Netty的相关组件之间的关系
  • 【2024年华为OD机试】(C卷,100分)- 悄悄话 (Java JS PythonC/C++)
  • Java——Stream流的peek方法详解
  • 第23周:机器学习及文献阅读
  • 【postgresql初级使用】在表的多个频繁使用列上创建一个索引,多条件查询优化,多场景案例揭示索引失效
  • WEB_星河飞雪_Windows(全)
  • HCIA-Access V2.5_2_2网络通信基础_TCP/IP模型结构
  • Unity引擎UI滚动列表——滚动复用基础介绍
  • Javascript Clipper library, v6(介绍目录)
  • 六、隐语PIR功能及使用介绍
  • 漫画之家:基于Spring Boot的漫画社交网络平台
  • C# WPF抽奖程序
  • 如何在UI自动化测试中创建稳定的定位器?
  • 笔记:在WPF中BitmapSource都有哪些派生类,他们主要功能,使用方法,使用场景
  • SpringBoot实现前后端传输加密设计
  • php项目的sdk封装成composer包的创建与发版
  • 【光电融合集成电路制造与封测】第四讲:扩散工艺,扩散的类型,恒定表面源扩散,限定表面源扩散,硼扩散
  • 分享一个您在汽车软件安全性测试中发现严重漏洞的案例,以及如何处理
  • 30天学会Go--第6天 GO语言 RESTful API 学习与实践
  • Tomcat(基础篇)
  • <router-view> 中key和name属性的用法详解以及案例
  • 试题转excel;pdf转excel;试卷转Excel,word试题转excel
  • 力扣 对称二叉树-101