




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、结构体类型和联合体类型 第1页/共36页8.1 8.1 结构体类型的基本概念结构体类型的基本概念 结构体类型概述 计算机应用中特别是在事务处理中,常常需要将不同的数据组合成为一个有机的整体,这些数据不属于同种数据类型,但这些数据又相互关联,用以描述一个操作对象的各种属性。这种由一些属于不同数据类型的数据组合而成的构造数据类型称为结构体类型。例如,学生登记表。 结构体类型的特点第2页/共36页8.1.1 8.1.1 结构体类型和变量的定义结构体类型和变量的定义 定义结构体类型的一般形式: struct 结构体名 数据类型 结构体成员1; 数据类型 结构体成员2;. 数据类型 结构体成员n;; s
2、truct studentstruct student char num8; char num8; char name20; char name20; char sex; char sex; int age; int age; float Score; float Score; ; ;第3页/共36页 定义结构体类型变量的三种方法8.1.1 8.1.1 结构体类型和变量的定义结构体类型和变量的定义第4页/共36页 定义结构体类型变量的三种方法struct A long number; char name20; int x; float y; struct A a1,a2;struct B lo
3、ng number; char name20; int x; float y;b1,b2; struct long number; char name20; int x; float y;c1,c2; 第5页/共36页 结构体类型的嵌套定义 结构体类型可以嵌套定义,即定义的一个结构体类型的成员中可以有属于另外一个已经定义完成的结构体类型的变量。第6页/共36页 为已经存在的数据类型取别名 定义构造类型时为这些类型取别名 注意:定义别名后,程序中可使用原类型名或别名定义变量,别名习惯上用大写字母。第7页/共36页struct studentstruct student long number;
4、long number; struct date birthday; struct date birthday; char name20; char name20; int age; int age; char sex; char sex; char address80; char address80; long tel; long tel; ; STUSTU; ;STUSTU stu1,stu2,stu3 stu1,stu2,stu3 STUSTU struct student struct student long number; long number; struct date birt
5、hday; struct date birthday; char name20; char name20; int age; int age; char sex; char sex; char address80; char address80; long tel; long tel; STUSTU; ;STUSTU stu1,stu2,stu3; stu1,stu2,stu3;第8页/共36页 使用typedef构造复杂数据类型 typedef int *IP; 定义IP为整型的指针类型。 IP p1,p2;等价于 int *p1,*p2; 例8-1 用typedef构造指定长度的字符串类型
6、 例8-3 用typedef构造指针数据类型。第9页/共36页8.1.3 8.1.3 结构体变量的引用和输入输出结构体变量的引用和输入输出 结构体变量的引用 C语言不允许将结构体变量作为整体操作,只能操作它的成员分量。成员分量的引用形式如下: 结构体变量名.成员名 例如:stu1.sex stu1.tel 第10页/共36页第11页/共36页 结构体变量的初始化 定义结构体变量的同时初始化: struct 标识符 变量名=结构体变量成员值列表; struct student stu2,stu1=5001,1988,12,30,”Liwei”,19,m,”12 songlin”,65102621
7、; stu2=stu1; /两个同类型结构体变量的整体赋值 结构体变量的输入输出 结构体变量不能作为一个整体进行输入或输出。只能将结构体变量的成员作为输入输出的对象。 第12页/共36页8.1.4 8.1.4 结构体变量作函数参数结构体变量作函数参数 结构体变量作为函数参数 例8-6 结构体变量作函数参数示例struct TEST int x; char ch;实参实参 struct TEST a;struct TEST a;aa.xa.chbb.xb.ch形参形参 struct TEST b;struct TEST b;10aa10第13页/共36页8.1.5 8.1.5 结构体作函数的返回
8、值类型结构体作函数的返回值类型 返回结构体类型函数概念结构体类型的数据对象不但能作为函数参数在函数之间传递,还可以作为函数的返回值。当函数的返回值类型是一个结构体类型时,该函数就称为返回结构体类型的函数。 函数定义形式 例例8-78-7 返回结构体类型函数的示例返回结构体类型函数的示例第14页/共36页结构体类型和联合体类型 第15页/共36页 结构体数组的概念 结构体数组中的每一个数组元素都是具有相同结构体类型的结构体变量。 如一个班的学生档案,某单位的工资表。 结构体数组的定义定义结构体数组的方式与定义结构体变量相同,只须说明它为数组类型。也有三种方法: struct 结构体名 数组名常量
9、表达式; 使用typedef为结构体类型名取别名来定义结构体数组。 STU stu130; 第16页/共36页 结构体数组的初始化 定义结构体数组的同时进行初始化 初始化的一般形式为: struct 结构体名 数组名=初始化数据列表;第17页/共36页 结构体数组元素的引用数组名下标.成员名 例8-8 结构体数组操作示例第18页/共36页 结构体数组作函数参数结构体数组可以作为函数的参数在函数间进行传递。使用结构体数组作为函数参数时,实现的是“传地址值调用”。即实参数组将全部或部分存储区域提供给形参数组共享。 例例8-98-9 结构体数组作函数参数示例结构体数组作函数参数示例ab第19页/共3
10、6页结构体类型和联合体类型 第20页/共36页8.3.1 8.3.1 结构体类型与指针的关系结构体类型与指针的关系 指向结构体变量的指针 通过指针变量访问结构体变量的成员形式: (*指针变量).成员名; 指针变量名-成员名;struct A int x; float y;a1,*p=&a1; &a1 = pa1 = *p a1.x (*p).x a1.y (*p).y p-x p-y第21页/共36页p&stustu*stu.countstuLiu33第22页/共36页 用结构体指针作为函数的参数 typedef struct stu char na
11、me20; int age; float score;STU;st0wangp8719chenzhao20998818st1st2第23页/共36页8.3.2 8.3.2 结构体数组与指针的关系结构体数组与指针的关系 指向结构体数组的指针 struct A char c; int x;a5,*p1;p1=&a2;&a2 = p1a2 = *p1 a2.c (*p1).c a2.x (*p1).x p1-c p1-xap1第24页/共36页 指向结构体数组的指针 struct A char c; int x;a5,*p2;p2=a;8.3.2 8.3.2 结构体数组与指针的关系结
12、构体数组与指针的关系ap2例例8-128-12 不移动指向结构体数组的指不移动指向结构体数组的指针操作结构体数组元素。针操作结构体数组元素。第25页/共36页结构体类型和联合体类型 第26页/共36页8.5 8.5 联合体数据类型的基本概念联合体数据类型的基本概念 问题的提出及对策允许不同数据类型的数据使用共同的存储区域第27页/共36页8.5.1 8.5.1 联合体类型的定义和变量引用联合体类型的定义和变量引用 联合体(共用体)类型的定义联合体类型的定义确定了参与共用存储区域的成员项以及成员项具有的数据类型。 联合体类型的定义形式:第28页/共36页 定义联合体变量的三种方式 第29页/共36页第30页/共36页 联合体变量的引用第31页/共36页8.5.2 8.5.2 联合体类型与结构体类型的区别联合体类型与结构体类型的区别 变量的存储长度不同 赋值后所呈现的状态不同 例8-18 结构体变量与联合体变量的赋值比较第32页/共36页struct A int x; char c2;a;a.x=0 x4142;a.c0=a;a.c1=b;union B int x; char c2;b;b.x=0 x4142;b.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美容仪器行业美容院美容仪器销售渠道拓展报告(2025年)
- 农业绿色发展政策支持下的农业产业结构调整政策报告
- 2025年远程医疗服务在分级诊疗中的远程手术服务模式创新报告
- 直播电商新玩法:2025年主播与品牌合作模式及风险控制研究报告
- 教育机构2025年人才流失原因分析及吸引策略研究报告
- 2025年制造业数字化转型数据治理与工业4.0战略对接报告
- 食品饮料行业2025年包装材料环保认证与市场竞争力分析报告
- 宣传部学期工作总结模版
- 老年教育课程设计创新基于2025年社区资源共享的实践报告
- 教师个人年度校本培训总结模版
- 福建省动植物疫病防控专项资金管理办法
- 《高级财务管理(第三版)》配套教学课件
- 离婚协议书免费版大全
- DB32T 4076-2021 生活垃圾焚烧稳定化飞灰填埋处置技术标准
- 分析化学第三章酸碱滴定法课件
- 生产安全事故应急预案(含深井铸造)
- 初中数学课程标准(2021版)
- 连锁药店商圈分析精编版
- 工程地质测绘ppt版(共61页)
- 水文地质与工程地质勘察工程地质测绘PPT
- 崩塌易发程度数量化评分表
评论
0/150
提交评论