




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10单元构造数据类型一结构体二结构体数组三
共用体四枚举类型五知识拓展本单元
目录CONTENTS任务1结构体PART结构体类型的引入?结构体的组成?结构体使用原则?在学生登记表中,一个学生的姓名应为字符型;学号可以为整型或字符型等。由于这些量的数据类型不一致,显然不能用一个数组来存放这一组数据,为了解决这个问题,C语言中给出了另一种构造数据类型——“结构”。任务1结构体任务1
结构体1.结构体类型的定义例如:定义形式:struct结构体名{
成员列表};structstudent{intnum;charname[20];charsex;intage;floatscore;};任务1
结构体1.结构体类型的定义几点事项:定义形式:struct结构体名{
成员列表};1)struct是关键字,表示后面的类型是结构体类
型,不能省略。注意不要忘写花括号外的分号。任务1
结构体1.结构体类型的定义几点事项:定义形式:struct结构体名{
成员列表};2)结构体名为C语言合法的标识符,用作结构体类型的标志,类型与变量是不同的概念。
在编译时,系统对变量分配存储空间,而对类型是不分配存储空间的。任务1
结构体1.结构体类型的定义几点事项:定义形式:struct结构体名{
成员列表};3)花括号内的成员列表用来说明组成该结构体的各个
成员,对每个成员应进行类型说明,其说明格式为:
类型符
成员名任务1
结构体1.结构体类型的定义几点事项:定义形式:struct结构体名{
成员列表};4)成员名的命名规则与变量名相同。同一个结构体类型中的各成员不可互相重名,但不同结构体类型的成员名可以重名,并且成员名还可以与程序中的变量重名。任务1
结构体1.结构体类型的定义几点事项:定义形式:struct结构体名{
成员列表};5)结构体成员的类型也可以是另外一个结构体类型。任务1
结构体2.结构体类型变量的定义和初始化
方法1:先定义结构体类型,后定义结构体变量。形式:struct结构体名变量名表;例如:structstudentstudent1,student2;
结构体类型结构体变量任务1
结构体2.结构体类型变量的定义和初始化
方法2:在定义结构体类型的同时,定义结构体变量。形式:struct结构体名
{
成员列表;}变量名表;例如:structstudent{intnum;charname[10];charsex;intage;floatscore;}student1,student2;任务1
结构体2.结构体类型变量的定义和初始化
结构体变量的初始化初始化的一般格式:struct结构体名
变量名={初值表};任务1
结构体3.结构体成员的引用
引用形式:结构体变量名.成员名说明:“.”是结构体成员运算符,其结合性是自左至右。例如:设有定义:structstudentstudent1={1,’Wangna’,’F’,20,90.5};
若引用结构体变量student1的num成员,可表示为:student1.num任务1
结构体
注意事项1.可以将一个结构体变量作为一个整体赋给另一
个具有相同类型的结构体变量。2.结构体变量或结构体指针不能直接作为输入输
出函数的输入项或输出项。在输入输出结构体
数据时,必须分别指明结构体变量的各成员名。任务1
结构体3.结构体成员的引用例题10-1:设计一个程序,输入一个学生的信息并显示。程序分析
在程序中定义一个结构体类型structstudent,包含num、name、age、sex和score五个成员,可定义其变量用来存放学生信息。任务1
结构体3.结构体成员的引用例题10-1:设计一个程序,输入一个学生的信息并显示。请同学们自己写出源程序任务2结构体数组PART任务2
结构体数组1.结构体数组的定义一个例子说明定义形式structstudent{intnum;charname[10];
charsex;intage;floatscore;}stu[20];structstudentstu5[10];任务2
结构体数组2.结构体数组的初始化初始化形式1:struct结构体名结构体数组名[]={初始数据};
初始化形式2:
struct结构体名{
结构体成员表;}结构体数组名[]={初始数据};任务2
结构体数组【例10-2】建立同学通讯录。程序分析:
定义一个结构mem,包含两个成员name和phone用来表示姓名和电话号码。在main函数中定义man为具有men类型的结构数组。用for循环控制各个元素中两个成员值的输入。最后输出所有信息。任务3共用体PART任务3
共用体
1.共用体类型的定义一般形式:union共用体名{成员列表};任务3
共用体
1.共用体类型的定义一般形式:union共用体名{成员列表};说明:1.union为关键字,表示定义1个
共用体类型。
*共用体名为C语言合法的标识符。任务3
共用体
1.共用体类型的定义一般形式:union共用体名{成员列表};说明:
2)花括号内的成员列表用来说明组
成该共用体的各个成员,对每个
成员应进行类型说明。
说明格式:类型符
成员名;任务3
共用体结构体和共用体的区别1)关键字
共用体:union结构体:struct2)内存单元
共用体:各个成员占有相同的内存单元;
结构体:各个成员分别占有不同的内存单元。3)类型长度:
共用体:最长成员的长度
结构体:所有成员的长度的总和。任务3
共用体
2.共用体变量的定义定义形式1:先定义共用体类型后定义共用体变量union共用体名
{成员列表};union共用体名
共用体变量名表;任务3
共用体
2.共用体变量的定义例如:uniondata{inta;floatb;charc[6];};uniondataudata;任务3
共用体
2.共用体变量的定义定义形式2:union共用体名
{成员列表};union共用体名
共用体变量名表;任务3
共用体
2.共用体变量的定义例如:
uniondata{inta;floatb;charc[6];}udata;任务3
共用体
2.共用体变量的定义定义形式3:直接定义共用体变量,缺少共用体名union{
成员列表;}共用体变量名表;任务3
共用体
2.共用体变量的定义例如:
union{inta;floatb;charc[6];}udata;任务3
共用体
3.共用体成员的引用
引用的格式:共用体变量名.成员名例如:给共用体变量udata的成员a赋值10:udata.a=10;任务3
共用体
引用共用体时应注意1)共用体不可在定义变量时初始化。2)共用体变量的地址和其成员地址是同一个地址。3)共用体变量一次只能在它分配的存储单元中
存放一个成员,所以对一个共用体多次赋值,
起作用的只是最后一次成员。任务3
共用体
4.共用体应用举例【例10-3】设有一个教师与学生通用的表格,教师数据有姓名,年龄,职业,教研室4项。学生有姓名,年龄,职业,班级四项。编程输入人员数据,再以表格形式输出。本例程序用一个结构数组body来存放人员数据,内含4个成员。其中depa是一个共用类型,这个共用类型又由两个成员组成,一个为整型量class,一个为字符数组office。任务3
共用体
4.共用体应用举例【例10-3】设有一个教师与学生通用的表格,教师数据有姓名,年龄,职业,教研室4项。学生有姓名,年龄,职业,班级四项。编程输入人员数据,再以表格形式输出。请同学们自己给出源程序任务4枚举类型PART任务4
枚举类型1.枚举类型说明一般形式:enum枚举名{元素名1,元素名2,……元素名n};例如:enumweekday{sun,mon,tue,wed,thu,fri,sat};该枚举名为weekday,枚举值共有7个,即一周中的7天。凡被说明为weekday类型的变量只能是7天中的某一天。
说明:任务4
枚举类型2.枚举变量的定义定义形式:enum枚举名{元素名1,元素名2…元素名n}枚举变量列表;任务4
枚举类型枚举变量的定义形式1)先说明后定义:enumweekday{sun,mon,tue,wed,thu,fri,sat};enumweekdaya,b;2)同时定义说明:enumweekday{sun,mon,tue,wed,thu,fri,sat}a,b;3)直接定义:
enum{sun,mon,tue,wed,thu,fri,sat}a,b;任务4
枚举类型3.枚举变量的引用1)枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。
例如,对枚举weekday的元素再作以下赋值:sun=3;sun=tue;
都是错误的。任务4
枚举类型3.枚举变量的引用2)枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序
定义为0,1,2…n。
如在weekday中,sun的值为0,mon的值为1…sat的值为6。任务4
枚举类型3.枚举变量的引用3)枚举元素的值也可以在定义时指定。
例如:enumweekday{sun=1,mon,tue,wed,thu=7,fri,sat}a;
对于没有赋值的元素,取值仍按顺序递增。任务4
枚举类型3.枚举变量的引用4)可对枚举变量进行判断或比较。例如:if(a!=sunday)printf(“notfreetime”);任务4
枚举类型3.枚举变量的引用5)只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。
例如:a=sat;b=tue;是正确的。a=6;b=2;是错误的。任务4
枚举类型3.枚举变量的引用6)枚举元素只是一个符号,代表一个数值,它不是字符常量也不是字符
串常量,使用时不要加单、双引号。
例如:printf(“%s”,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川甘孜州大学生乡村医生专项计划招聘考试真题2024
- 长郡知识竞赛培训课件
- 安防系统售后服务方案及措施
- 2024年省燃气经营企业从业人员考试(压缩天然气场站工)经典试题及答案四
- 专题11 强调句的用法 (学生版)-2025年新高一英语暑假衔接讲练 (人教版)
- 2025年煤矿企业主要负责人安管能力考试模拟题及答案
- 难点详解人教版八年级物理上册第6章质量与密度-密度综合练习试题(含答案及解析)
- 2025年山西省煤矿安全生产管理人员安全生产知识和管理能力考试全真模拟试题及答案
- 2025年道路运输企业主要负责人和安全生产管理人员考试(主要负责人)考前模拟试题及答案
- 2025年煤矿企业主要负责人安全生产知识和管理能力考试练习题及答案
- 2024年太原武宿机场航空产业集团招聘笔试冲刺题(带答案解析)
- 现代礼仪与沟通(大学生礼仪沟通课程)全套教学课件
- 严重精神障碍患者家属护理教育
- 坚持立足中国又面向世界讲解
- 《昆虫的美食》课件
- 制程工序能力分析报告
- TRIZ试题库资料整理
- 双室平衡容器原理
- 焊接热源及其热作用
- 等腰三角形的性质市公开课金奖市赛课一等奖课件
- 生产车间行为规范
评论
0/150
提交评论