10.9结构体 共用体
C语言提供了一种语法叫结构体struct //专门用来构造复杂的数据类型//解决基本类型不好直接解决的问题//结构体的第一步 是构造数据类型//造一个数据类型 --- 自定义数据类型 ---根据实际问题的需要 组织数据类型 ------ 等同于int//语法:struct 结构体名{成员列表 //用来表示 关心的数据};说明:1.结构体名 --- 也是一个标识符 命名规则 和变量名命名规则一致2.成员列表 --- 写法 就是写成 变量的定义形式成员变量 相互之间以 分号作为分隔//构造一个学生类型struct stu{//成员列表//就是关心的学生相关数据char name[20];int sno;int age;float score;}; //----这块要有分号这个写好之后一个学生相关数据类型 被构造出来了。表示这种类型的方式:struct stu //就是类型名 地位 类似 int char short定义变量定义数组定义指针做形参变量做函数返回值类型//定义变量struct stu s;//定义变量 开空间//初始化 ---按照个成员变量本身初始化的方式进行初始化 多个成员之间 用逗号隔开struct stu s {tom,110,18,99.5};//赋值//结构体使用访问成员变量结构体变量名.成员变量名 //表示访问某个结构体变量中某个成员变量说明:1.同类型结构体之间可以相互赋值struct stu s {tom,110,18,98};struct stu s1;s1 s; //同类型结构体变量直接2.结构体类型 做函数的形参一般不写结构体类型的变量而是传结构体类型指针 //--提效效率3.指针方式访问结构体成员结构体类型指针-结构体成员变量结构体类型变量.结构体成员变量练习:让学生 按照分数大小排序qsort, qsort_r - sort an array //quick sort#include stdlib.h//功能 对数组排序void qsort(void *base, //表示数组所在空间首地址 ---数组名size_t nmemb, //表示要排序的元素个数size_t size, //表示单个元素的大小int (*compar)(const void *, const void *) //函数指针 --- 用来指定比较大小的规则);//回调函数 -- 用来指定比较大小的规则int compar(const void *a, const void *b){// a 代表的数待比较的两个元素的地址// b} //返回值 --- a b //做差// a b// a bint a[10] {2,1,5,7,8,6,3,4,9,10};qsort(a,10,sizeof(int),compar);int compar(const void *a, const void *b){const int *p (const int *)a;const int *q (const int *)b;return *p - *q;}------------------------------------------------------考点:计算一下结构体类型的大小//结构体大小//结构体嵌套//结构体的对齐规则: //内存地址的对齐1.结构体成员变量的对齐自然边界对齐2.结构体整体对齐以最大的成员来对齐------------------------------------------------------------结构体类型定义的形式:1.形式1 类型定义 和 变量定义分开struct demo{}; //类型定义struct demo d; //变量定义2.形式2 类型定义和变量定义放到一起struct demo{}d{初始化}; //类型定义3.形式3 类型定义和变量定义放到一起,省略结构体名struct{}d{初始化}; //类型定义 ---这种结构体类型只能用一次2.语法细节结构体定义能不能放到局部3.结构体 和 数组区别首先都是构造类型结构体 --- 批量处理数据 --- 处理不同类型的数据数组 --- 批量处理数据 --- 处理的是同一类型的数据访问数据的方式数组 ---下标随机访问结构体 --- . 运算- 运算---------------------------------------------共用体:有时需要使几种不同类型的变量存放到同一段内存单元中这几个变量共用了一块内存空间共用体省内存 省空间 // 早期计算机 硬件资源很紧张用法://构造类型//类型 定义变量定义指针定义数组做函数形参 做函数返回值类型语法: //类型定义union 共用体名{成员列表};union demo{int a;short b;char c;};定义变量--初始化注意:1.共用体默认初始化只能初始化一个成员初始化是首个成员2.共用体的空间以最大的成员为空间大小3.成员变量起始地址是一样的但是用多少个字节取决于成员变量的类型4.连续赋值时共用体中最终结果取决于取决于最终内存中存放了什么后给到的会对前面给到数据形参覆盖5.共用体成员的引用和 结构体引用方式一样.-考点:用共用体检测大小端写成函数共用体应用场景:1. 节省空间struct stu{char name[20];int no;float score;};struct teacher{char name[20];int no;float salary;};struct member{char name[20];int no;union data{float salary;float score;}d;};struct member stu;stu.d.scoret.d.salary2. 数据转化ip地址192.168.1.93 //点分十进制//ip地址本质是一个32位整数//四个字节//192.168.1.93

相关新闻

铁路智能调度系统:B/S+C/S混合架构与蚁群算法落地实践

铁路智能调度系统:B/S+C/S混合架构与蚁群算法落地实践

简介:本资源是一篇发表于《新型工业化》2020年第6期的专业技术论文,聚焦铁路运输智能化系统的开发设计全过程,面向智能交通、工业软件开发及铁路信息化领域的工程师、高校研究者与系统架构师,解决传统铁路调度效率低、人工依赖强、…

2026/10/10 9:19:57 阅读更多 →
分布式系统监控工具选型与落地:从指标、链路到告警的实践

分布式系统监控工具选型与落地:从指标、链路到告警的实践

做分布式系统运维的人都会有这种感觉:系统规模一上来,排查问题的时间比写业务代码的时间还要长。一个订单服务偶发超时,可能要同时翻网关日志、链路追踪、数据库慢查询和消息队列积压数据,信息分散在十几个界面里,等线…

2026/10/11 10:28:44 阅读更多 →
AI 写的 Redis 分布式锁为什么会超卖:四个错误写法和正确实现

AI 写的 Redis 分布式锁为什么会超卖:四个错误写法和正确实现

秒杀功能要加个分布式锁。我让 AI 写,它给了一段这个: public boolean tryLock(String key, long timeoutSeconds) {Boolean success redisTemplate.opsForValue().setIfAbsent(key, "1", timeoutSeconds, TimeUnit.SECONDS);return Boolean.…

2026/10/10 9:19:57 阅读更多 →

最新新闻

单链表基础三题详解:删除节点、反转链表与找中间节点

单链表基础三题详解:删除节点、反转链表与找中间节点

链表这块内容,大学里第一次接触的时候觉得简单,无非是节点加指针。可真到动手写题的时候,删除节点能删丢一半,反转链表能绕成环,找中间节点还会因为奇偶数量吵半天。单链表综合练习里的“删除指定值节点”“反转链表”…

2026/10/11 14:44:43 阅读更多 →
C/C++手撸泡泡堂:从SDL2环境搭建到状态机实现

C/C++手撸泡泡堂:从SDL2环境搭建到状态机实现

简介:本资源是一份基于C/C实现的经典2D游戏《泡泡堂》(炸弹人)完整开发项目,面向C初学者与游戏编程入门者,提供从代码逻辑、图形渲染到音画资源集成的全链路实践范例。压缩包共346个文件,含235张PNG/JPG游戏…

2026/10/11 14:44:43 阅读更多 →
GitHub日榜趋势捕获系统:轻量级技术雷达构建指南

GitHub日榜趋势捕获系统:轻量级技术雷达构建指南

1. 项目概述:这不是一份榜单,而是一套可复用的趋势捕获系统“GitHub 日榜趋势速报 | 2026-10-04”——看到这个标题,很多人第一反应是:又一个爬虫脚本定时任务Markdown生成的自动化小工具。但如果你真这么想,就错过了它…

2026/10/11 14:44:43 阅读更多 →
Oracle 19c RAC Linux 7.6实战安装:ASM磁盘权限与udev规则避坑指南

Oracle 19c RAC Linux 7.6实战安装:ASM磁盘权限与udev规则避坑指南

简介:本资源是一份面向Oracle DBA与Linux系统工程师的实战型安装指南,聚焦Red Hat Enterprise Linux 7.6平台部署Oracle 19c RAC高可用集群,重点解决GNS配置SCAN、Flex ASM架构演进、Standalone与Domain Service两种集群模式差异等关键难点。…

2026/10/11 14:44:43 阅读更多 →
MRAM嵌入式非易失存储器为什么能替代SPI Flash频繁擦写

MRAM嵌入式非易失存储器为什么能替代SPI Flash频繁擦写

MRAM的全称是Magnetoresistive RAM,磁阻随机存取存储器。MRAM嵌入式非易失存储器用电子自旋的磁化方向来存储比特,而不是像Flash那样靠浮栅里困住的电荷。这个物理机理的差异,直接换来了四个Flash和EEPROM无法同时给出的特征: 1、…

2026/10/11 14:44:43 阅读更多 →
VPP2:预测得更好,行动得更好

VPP2:预测得更好,行动得更好

目录 1. 研究背景 2. 数据处理流水线 2.1.视频来源与收集 2.2. 视频过滤、分割与标注 2.3 统一动作空间和坐标系 2.4. 统一多视角输入 3. VPP模型策略 3.1 模型三阶段训练 3.2 VLM用于高级规划 4. 实验以及结果 4.1 视频预测质量分析 4.2 策略执行结果分析 5. 总…

2026/10/11 14:43:43 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →