C—初阶结构体

news2025/1/16 12:43:39

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

结构体基础知识:

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

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

 结构的声明

 结构有一个固定的声明,类型(格式)如下:(其中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.coloradmin.cn/o/2256616.html

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

相关文章

物品识别 树莓派 5 YOLO v5 v8 v10 11 计算机视觉

0. 要实现的效果 让树莓派可以识别身边的一些物品,比如电脑,鼠标,键盘,杯子,行李箱,双肩包,床,椅子等 1. 硬件设备 树莓派 5 raspberrypi.com/products/raspberry-pi-5/树莓派官方摄…

JS学习(1)(基本概念与作用、与HTML、CSS区别)

目录 一、JavaScript是什么? (1)基本介绍 (2)简称:JS? 二、JavaScript的作用。 三、HTML、CSS、JS之间的关系。 (1)html、css。 (2)JavaScript。 …

matlab读取NetCDF文件

matlab对NetCDF文件进行信息获取和读取数据 文章目录 前言一、什么是NetCDF文件二、读取NetCDF文件数据 1.引入库 2.读入数据总结 前言 在气象学中,许多气象数据存储在NetCDF文件中,后缀为.nc,通常可以用NCL、python和MATLAB等对该…

shell自动显示当前git的branch

效果简介: 1. 如果没在git仓库,显示无变化 2. 如果在git仓库,显示当前分支 实现方法: 在~/.bashrc 里添加: function git_branch { test -d .git && branch"git branch | grep "^\*" | sed…

第四十一天 ASP应用 HTTP.sys 漏洞 iis6文件解析漏洞和短文件漏洞 access数据库泄露漏洞

前言 随着时代的发展现在呀,这个ASp已经淡出大众的视线了 ,ASP之前的火爆程度无异于现在的PHP 大家的童年 4399 什么的网站都是这个搭建的ASP 简介 | 菜鸟教程 那大家想问为什么你妹的 这个这么火的网站搭建语言被淘汰了呢 其实多半是以为它的不开…

Java——常用类(下)

时间类 “时间如流水,一去不复返”,时间是一维的。所以,我们需要一把刻度尺来表达和度量时间。在计算机世界,我们把1970 年 1 月 1 日 00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一),如图所示。…

ARMv8-A MacOS调试环境搭建

文章目录 简介安装qemu交叉编译工具链C语言插件 gdb调试测试代码添加调试配置 JLink 调试树莓派 简介 本节主要介绍基于Visual Studio Code在MacOS下调试环境的搭建,Linux发行版上的过程也类型,它主要使用到以下工具链: aarch64 架构的交叉…

万字长文解读深度学习——dVAE(DALL·E的核心部件)

🌺历史文章列表🌺 深度学习——优化算法、激活函数、归一化、正则化 深度学习——权重初始化、评估指标、梯度消失和梯度爆炸 深度学习——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总 万字长…

Javaweb 前端 ajax

作用:和后端交互 script 是 js axios(这里是函数的调用方式){封装的是对象} {}是对象 案例 。then的含义,请求后端之后,后端把数据放在回调 点了清空之后,还要查询全部 await等待请求执行完之后,接收这个结果 代码…

IdentityServer4框架、ASP.NET core Identity

OAuth2.0 IdentityServer4 ASP.NET Core Identity提供了一个用来管理和存储用户账户的框架. IdentityServer4是基于ASP.NET Core实现的认证和授权框架,是对OpenID Connect和OAuth 2.0协议的实现。 IdentityServer是一个中间件,它可以添加符合OpenID Connect和OAut…

Linux系统nginx版本升级

最近公司漏扫有涉及到需要升级nginx的部分, 以下是一些总结经验 检查当前nginx版本 执行命令: nginx -V 如果没有设置环境变量则需要进入到nginx目录sbin目录下执行: ./nginx -V 下载最新版nginx nginx下载地址: https://nginx.org/en/download.html 1)选择稳定版本 wget h…

给建筑物“穿毛衣”:AI绘图新玩法

随着气温的骤降,我们不仅感受到了自然界的寒冷,甚至连城市的建筑物似乎也在寒风中“颤抖”。在这样的背景下,一种新颖的AI绘图玩法——给建筑“穿毛衣”在网络上迅速走红。本文将详细介绍这一创意玩法,并提供手把手的教学指导。 A…

第2章:CSS基本语法 --[CSS零基础入门]

CSS(层叠样式表,Cascading Style Sheets)是用来描述HTML或XML(包括各种XML:SVG, MathML 或 XHTML)等文档的外观和格式的语言。以下是CSS的基本语法: 1.选择器 1.元素选择器 元素选择器是基于HTML标签名称来选择元素的。当你使用元素选择器时,你是在告诉浏览器对页面…

SpringMvc完整知识点二(完结)

SpringMVC获取请求参数 环境准备工作等均省略,可详见快速入门,此处只写非共有部分代码 该部分示例项目SpringMvcThree已上传至Gitee,可自行下载 客户端请求参数的格式为:namevalue&passwordvalue... ... 服务端想要获取请求…

Spring完整知识点一

Spring简介 额外知识点 在之前的学习中我们在Service业务层创建Dao/Mapper数据访问层(持久层)的对象是通过工具类来获取对应Dao/Mapper数据访问层(持久层)的接口代理对象在此处我们不用工具类来获取对应Dao/Mapper数据访问层&…

Jupyter Notebook认识、安装和启动以及使用

Jupyter Notebook认识、安装和启动以及使用 Jupyter Notebook认识、安装和启动以及使用 Jupyter Notebook认识、安装和启动以及使用一、认识Jupyter Notebook1.1 Jupyter Notebook概述1.2 Jupyter Notebook 重要特性(1)交互式代码执行(2)支持多种编程语言(3)富文本编辑(4)代码高…

React 组件中 State 的定义、使用及正确更新方式

​🌈个人主页:前端青山 🔥系列专栏:React篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容React 组件中 State 的定义、使用及正确更新方式 前言 在 React 应用开发中,state …

AIDD-人工智能药物设计-化学自然语言引导的扩散式类药分子编辑:DiffIUPAC的魔法之旅

J. Pharm. Anal. | 化学自然语言引导的扩散式类药分子编辑:DiffIUPAC的魔法之旅 AIDD药研. 制药工程和生命科学背景,重点关注于计算机辅助药物设计(CADD)/药物筛选、分子动力学模拟MD,兽药信息学VetInformatics&…

服务器数据恢复—硬盘掉线导致热备盘同步失败的RAID5阵列数据恢复案例

服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障&#…

2024年12月HarmonyOS应用开发者基础认证全新题库

注意事项:切记在考试之外的设备上打开题库进行搜索,防止切屏三次考试自动结束,题目是乱序,每次考试,选项的顺序都不同 更新时间:2024年12月3日 这是基础认证题库,不是高级认证题库注意看清楚标…