




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章结构体与共用体10.1结构体类型10.2共用体10.3用typedef定义已有类型的别名10.4案例学习
10.1结 构 体 类 型
10.1.1结构体类型的定义
结构体类型定义的一般形式是:
例如学生类型的定义:这样就定义了一种结构体数据类型structstudent。采用同样的方法可以定义日期结构体类型:10.1.2结构体变量
1.定义结构体类型的变量
定义结构体变量有三种方法:
(1)利用已定义的结构体类型名定义变量。
struct结构体名变量名表;
例如:structstudentstu1,stu2,stu3;
(2)在定义结构体类型的同时定义结构体变量。
struct结构体名
{成员定义表;
}变量名表;
例如:
(3)直接定义结构体类型变量。
struct
{成员定义表;
}变量名表;
例如:
2.结构体变量的初始化
结构体变量的初始化与一维数组类似,一般形式为:
结构体变量名={初值表};
例如:
structstudentstu1={1002021,“Liming”,‘M’,19,95.5};
如果初值个数少于结构体成员个数,则将无初值对应的成员赋以0值;如果初值个数多于结构体成员个数,则编译出错。
3.结构体变量成员的引用
结构体变量成员引用的一般形式如下:
结构体变量名.成员名
其中的“.”是成员运算符,运算优先级别最高。
例如:stu1.num=1002032将把1002032赋值给结构体变量stu1的num成员。另外,也可以用指针来引用结构体变量的成员。例如:
4.结构体变量的运算
(1)同类型结构体变量之间可以相互赋值。
(2)用sizeof运算符计算结构体变量所占的内存空间。
(3)可以用取地址运算符&对结构体变量进行取址运算。
【例10-1】结构体变量的运算。图10.1例10-1运行结果10.1.3特殊的结构体成员——位段
1.位段的定义
在结构体中可以以位为单位来指定其成员所占的内存长度,这种以位为单位的成员称为位段。一个位段由一位或若干位组成。在定义位段的时候,位段名后面加冒号,冒号后指出位段的位数。例如:图10.2位段的图示
2.位段的使用
【例10-2】输入一个学生信息再将其输出。学生信息包括学号(num)、姓名(name)、性别(sex)、出生日期(birthday)、成绩(score),要求性别和出生日期用位段表示。图10.3例10-2运行结果10.1.4结构体数组
1.结构体数组的定义
定义结构体数组和定义普通数组方法相同,只要用一个方括号指明是数组,并且给出数组的大小即可。和定义结构体变量一样,定义结构体数组也有三种方法:
(1)利用已定义的结构体类型名定义结构体数组。
(2)在定义结构体类型的同时定义结构体数组。
(3)直接定义结构体类型变量。例如:
2.结构体数组的初始化
【例10-3】结构体数组。图10.4例10-3运行结果10.1.5结构体与函数
【例10-4】编制一个复数加法函数,采用值传递的方法传送数据。图10.5例10-4运行结果
10.2共用体
10.2.1共用体类型的定义
共用体类型定义的一般形式如下:下面是对共用体类型定义的一些说明:
(1)union是定义共用体类型的关键字,共用体名是用户定义的类型标识。
(2)共用体名和成员名的命名规则和变量名的命名规则相同。
(3)成员的数据类型可以是C语言所允许的任何数据类型。例如:10.2.2共用体变量
1.定义共用体类型的变量
共用体变量的定义与结构体变量的定义相似,也有三种方法:利用已定义的共用体类型名定义变量、在定义共用体类型的同时定义变量、直接定义共用体类型变量。定义共用体变量之后,系统按照共用体类型的组成,为定义的共用体变量分配内存单元。共用体变量所占内存大小等于共用体中占用内存的长度最长的成员的内存大小。例如:
2.共用体变量成员的引用
例如:
3.共用体变量的运算
(1)同类型共用体变量之间可以相互赋值。
(2)用sizeof运算符计算共用体变量所占内存空间。
(3)可以用取地址运算符&对共用体变量进行取址运算。
【例10-5】共用体变量的运算。图10.6例10-5运行结果
4.共用体变量赋初值
共用体类型变量在定义时只能对第一个成员进行初始化。
【例10-6】对共用体类型变量第一个成员进行初始化。图10.7例10-6运行结果10.2.3共用体变量的用途
(1)处理部分成员类型相同,部分成员类型不同的结构体数据。
【例10-7】某校要建立一个教师和学生的人员登记表,信息包括编号、姓名、性别、职业、教师所在部门和学生所在班级号。编程输入人员数据并输出。图10.8例10-7运行结果
【例10-8】浮点数的存储误差。图10.9例10-8运行结果
【例10-9】验证浮点数的存储格式。图10.10例10-9运行结果
10.3用typedef定义已有类型的别名
10.3.1用typedef为类型名定义别名的一般形式
用typedef为类型名定义别名的一般形式如下:
typedef类型名新类型名
或
typedef类型定义新类型名
typedef是关键字,类型名可以是基本类型、构造类型、指针类型或自定义类型,新类型名是自定义的类型名。typedef只是起了一个新的类型名,并没有建立新的数据类型。10.3.2typedef为类型命名的方法
(1)typedef为基本类型命名。
例如:
typedefintinteger;
integerx,y;
/*相当于intx,y;*/
(2) typedef为数组类型命名。例如:
typedefcharCH[80];
CHc,d[4];/*相当于charc[80],d[4][80];*/
(3) typedef为结构体、共用体类型命名。例如:
typedefstructnode
{intdata;
structnode*next;
} Node;
Node*head;
/*相当于structnode*hea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南城建职业技术学院《贵州民族民间文学》2023-2024学年第二学期期末试卷
- 陕西中医药大学《第二外语(二)(法)》2023-2024学年第二学期期末试卷
- 锦州医科大学医疗学院《外国文学史二》2023-2024学年第一学期期末试卷
- 上海民远职业技术学院《食品加工与保藏原理》2023-2024学年第一学期期末试卷
- 宿州学院《InternationalFinanicalManagement》2023-2024学年第二学期期末试卷
- 同济大学浙江学院《音乐商务项目策划(二)》2023-2024学年第一学期期末试卷
- 安徽中医药大学《丝绸之路与一带一路》2023-2024学年第一学期期末试卷
- 浙江省慈溪市六校2024-2025学年高三语文试题4月适应性考试试题含解析
- 遂宁市蓬溪县2025年数学三下期末复习检测模拟试题含解析
- 招商银行客户分级管理
- 技术开发(委托)合同样本-(中华人民共和国科学技术部印制)
- 保安招聘个人信息登记表
- IATF16949项目移交管理程序
- 2022-2023学年山东省烟台市海阳市八年级(下)期末语文试卷(五四学制)
- 智能检测技术与传感器PPT完整全套教学课件
- 网络设备安装与调试(华为eNSP模拟器)PPT完整全套教学课件
- 2019五年级必背古诗诵读PPT
- YY/T 1722-2020前白蛋白测定试剂盒(免疫比浊法)
- 风险点告知牌(钢结构)
- 幼儿园10以内的加减法课件
- 电去离子(EDI)技术课件
评论
0/150
提交评论