版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
20XX/XX/XXC语言结构体与联合体课堂教学汇报人:XXXCONTENTS目录01
课程开篇导入02
结构体与联合体概念辨析03
结构体的基础用法04
联合体的基础用法05
基础实操案例讲解06
课程总结与作业课程开篇导入01为什么需要自定义类型01应对复杂数据场景需求处理学生信息这类含姓名、学号、成绩的组合数据,C语言基础类型无法直接完整描述。02提升代码可读性与维护性用自定义结构体描述图书信息,比零散变量更直观,修改图书属性时无需多处调整代码。03实现数据逻辑关联与封装用联合体存储不同类型的传感器数据,可在同一块内存中灵活切换数据类型,节省空间。本节课学习目标
掌握结构体的定义与基本使用能够独立完成学生信息结构体的定义,学会通过成员访问符调用结构体中的各项数据。
理解联合体的核心特性与应用场景明确联合体共用内存的特点,能举例说明其在嵌入式设备内存优化中的实际用法。
学会区分结构体与联合体的适用场景通过对比学生成绩存储案例,掌握两种数据类型在不同需求下的选择逻辑。结构体与联合体概念辨析02结构体的组成结构结构体由多个不同类型的成员变量组成,比如可包含int型学号、char型姓名,实现数据的组合存储。结构体的内存布局结构体的内存按成员变量类型依次分配,各成员独立占用内存空间,如int占4字节、char占1字节。结构体的使用方式通过定义结构体变量调用成员,比如定义Student结构体后,用访问学生姓名,实现数据的便捷操作。结构体的核心定义联合体的核心定义联合体的内存共享特性联合体所有成员共用同一块内存空间,比如定义含int和char的联合体,两者起始地址完全一致。联合体的成员互斥访问规则同一时间仅能访问一个成员,修改char成员后,int成员的取值会随内存变化而改变。联合体的大小计算规则联合体大小为最大成员的字节数,如含double和int的联合体,大小为8字节而非12字节。二者的核心差异
内存分配方式不同结构体为每个成员分配独立内存,如存储学生信息的struct会给姓名、学号各分对应空间。
内存占用大小不同联合体共用一块内存,总大小为最大成员的大小,远小于同成员结构体的内存占用总和。
数据存储特性不同结构体可同时存储所有成员数据,联合体同一时间仅能有效存储一个成员的数据。结构体的基础用法03常规结构体声明这是最基础的声明形式,如声明`structStudent{intid;charname[20];};`,直接定义结构体类型与成员。匿名结构体声明匿名结构体无需指定结构体名称,仅用于临时场景,例如`struct{intx;inty;}point;`可直接定义变量。typedef重命名结构体声明通过typedef可简化结构体类型名,如`typedefstruct{intage;chargender;}Person;`,后续可用Person直接定义变量。结构体的声明方式结构体变量的定义
先定义结构体类型再定义变量先通过struct关键字声明结构体类型,再用该类型定义变量,如先定义structStudent再定义stu1、stu2。
定义结构体类型同时定义变量在声明结构体类型的末尾直接定义变量,例如structBook{charname[20];}book1,book2;便捷高效。
直接定义匿名结构体变量省略结构体类型名,直接定义变量,如struct{intid;floatscore;}stu;适合临时使用场景。结构体成员的访问
通过“.”运算符访问普通结构体变量成员定义普通结构体变量后,可直接用“.”调用成员,如用访问学生结构体变量stu的姓名成员。
通过“->”运算符访问结构体指针成员若为结构体指针变量,需用“->”调用成员,例如用p->age访问指向学生结构体的指针p的年龄成员。结构体数组的使用结构体数组的定义与初始化可通过声明结构体类型后定义数组,如定义学生结构体数组,直接用多组学生信息完成初始化。结构体数组的元素访问采用“数组名[下标].成员名”格式访问,例如调用student[0].name获取首个学生的姓名信息。结构体数组的遍历操作借助for循环逐个遍历数组元素,可实现批量统计学生成绩、输出全体学生信息等功能。联合体的基础用法04直接声明联合体类型在代码中直接使用union关键字定义联合体,如unionData{inta;charb;},可同时完成类型与变量声明。先声明类型再定义变量先通过union+类型名声明联合体类型,如unionData;后续再用该类型定义具体变量,提升代码可读性。匿名联合体声明省略联合体类型名,直接定义变量,如union{floatx;doubley;}val,适用于仅需单次使用的场景。联合体的声明方式联合体变量的定义随联合体类型同时定义变量
在声明联合体类型时直接定义变量,如unionData{inta;charb;}data;,适合临时使用的场景。先定义类型再声明变量
先通过unionData{inta;charb;}定义类型,再用unionDatadata;声明变量,便于批量创建同类型变量。匿名联合体直接定义变量
省略联合体名称直接定义,如union{inta;charb;}data;,适用于仅需单次使用的简单场景。联合体成员的访问通过成员名直接访问在C语言中,可使用"联合体变量名.成员名"的形式,如unionDataa;a.i=10;直接为整型成员赋值。通过指针间接访问借助指向联合体的指针,用"->"运算符访问成员,如unionData*p=&a;p->f=3.14;操作浮点型成员。联合体的适用场景
节省内存的嵌入式开发场景在单片机等嵌入式开发中,如51单片机项目,用联合体共享内存存储不同类型的传感器数据。
多类型数据互转的场景在网络数据解析中,用联合体实现二进制数据与字符、整数等类型的快速转换,提升效率。
硬件寄存器操作场景操作ARM芯片的硬件寄存器时,用联合体可同时按位和按字节访问寄存器内容,适配不同需求。基础实操案例讲解05结构体存储学生多维度信息用结构体定义包含学号、姓名、成绩的变量,录入3位学生信息,演示结构化数据的存储逻辑。联合体实现多类型成绩兼容借助联合体定义可存分数或等级的成绩项,适配不同科目考核方式,降低内存占用。结构体数组批量管理学生数据创建结构体数组存储全班学生信息,实现批量遍历查询,演示多数据的高效管理方法。学生信息管理案例硬件寄存器定义案例用结构体定义GPIO寄存器组以STM32的GPIO寄存器为例,用结构体封装CRL、CRH、IDR等寄存器,清晰映射硬件地址。用联合体实现寄存器位域操作针对串口控制寄存器,用联合体结合位域,可单独操作某一位,比如配置串口奇偶校验位。通讯录节点定义案例结构体实现单字段通讯录节点定义含姓名字段的结构体作为通讯录节点,可参考学生信息管理系统中基础节点的搭建逻辑。结构体实现多字段通讯录节点定义包含姓名、电话、住址的结构体节点,对应日常通讯录中完整联系人信息的存储需求。联合体优化通讯录节点存储用联合体存储不同类型联系信息,如固定电话与手机号,节省内存空间,适配多样数据场景。联合体存储学生成绩类型数据用联合体存储学生的百分制、等级制成绩,无需为两种成绩各开变量,仅占用4字节内存。联合体存储设备状态信息用联合体存储设备的运行参数与故障代码,同一空间按需切换存储内容,节省嵌入式设备内存。联合体存储图形坐标数据用联合体存储图形的直角坐标与极坐标数据,避免冗余内存占用,适配不同坐标计算场景。共用存储空间优化案例常见错误用法解析
01结构体成员直接赋值错误初学者常直接给结构体整体赋值,如structStudents1=s2,需用memcpy或逐个成员赋值。
02联合体成员越界访问错误误用联合体时易访问未初始化成员,如同用union存int和char后直接读char,引发数据混乱。
03结构体指针未初始化错误定义结构体指针后未分配内存就访问成员,如structNode*p;p->data=1,会导致程序崩溃。课程总结与作业06核心知识点梳理
结构体定义与成员访问结构体是自定义复合类型,可嵌套基础类型,通过"."或"->"访问成员,如用struct存储学生信息。
联合体内存特性解析联合体成员共享同一块内存空间,大小为最大成员的字节数,适合节省内存场景。
结构体与联合体的语法差异结构体成员独立分配内存,联合体成员内存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿色建材铺设施工工艺
- 水泥搅拌桩安全技术交底
- 广西壮族自治区梧州市2025~2026学年高一下册7月期末抽样检测数学试卷【附解析】
- 临时围挡设施拆除清理保证措施
- 医院手卫生知识考试试题及答案
- 2025-2026年四川省部编版高三生物第9课生物技术应用习题集
- 2026年网络安全管理与政策法规备考习题
- 2025-2026年中医内科常见病证候诊断与治疗习题
- 2025-2026年中医养生保健知识测试卷
- 含氮杂环化合物电催化氧化技术:原理、应用及制药废水处理实践
- 文具店策划创业策划方案书
- 水利水电工程移民信息管理系统技术导则
- 瓷砖基础知识培训课件教学
- (完整版)水电、风电效益测算分析表
- 盒马鲜生述职升职报告
- 剑桥英语三年级下册单词表
- 公共营养师基础知识
- 2025年江苏苏州市常熟高新技术产业开发区招商公司招聘笔试参考题库附带答案详解
- 浙江住宅工程质量常见问题控制标准2022年
- 安全工程专业导论
- 03G372 钢筋混凝土雨篷
评论
0/150
提交评论