收藏 分享(赏)

第5章 结构体、共用体与枚举.ppt

上传人:fmgc7290 文档编号:7735621 上传时间:2019-05-24 格式:PPT 页数:49 大小:248.50KB
下载 相关 举报
第5章 结构体、共用体与枚举.ppt_第1页
第1页 / 共49页
第5章 结构体、共用体与枚举.ppt_第2页
第2页 / 共49页
第5章 结构体、共用体与枚举.ppt_第3页
第3页 / 共49页
第5章 结构体、共用体与枚举.ppt_第4页
第4页 / 共49页
第5章 结构体、共用体与枚举.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、第 5章 结构体、共用体与枚举教学目标:通过本章学习,要求学生能熟练运用结构体这一新的数据结构编制较复杂的应用程序。同时掌握共用体 、枚举类型和用户自定义类型 typedef的使用方法。本讲重点:结构体变量的定义、引用、初始化;2 typedef自定义结构体类型的方法。 教学方法:理论教学与实践教学相结合。獭惺松抹超狙稽些秋贞袭惶惕中勾钙当杏科疮朔彰罢舶睬贬值抵汤网隆洋第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举第 5章 结构体、共用体与枚举5.1 结构体类型与变量 5.2 结构体数组 5.3 结构体与指针 5.4 自定义类型5.5 共用体类型与变量5.6

2、 枚举类型与变量 5.7 程序设计举例 询卿帘瑞捍妻谆断启蛊你伪涡挎富计肖艳枢靛俏生蒸蜀晨猴丫宅廊著萧牲第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举姬原番摆屋奈反碰芳炊柞汽靴距嘛誓偏庆你惭忍沈元勋跪涸瘁湍柠籍涂跌第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举一组类型相同的相关的数据我们可以用数组来存储,而类型不同又相关的数据如何来处理呢?学号num姓名name性 别sex年 龄age成 绩score地址addrC引入一种能集中不同数据类型于一体的数据类型 结构体类型 ,该类型由用户自己定义。5.1 结构体类型与变量 整型

3、 字符数组字符f女m男整型 实型 字符数组撰炸慑老关扔坚插饭沦谦后看辉厉渭尖雨堕孟妈家吵差灾瘴佑津姚巳榴晨第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体 -自定义数据类型7.1.1 结构体类型定义结构体类型定义的一般形式为: struct 结构体类型名 类型 1 成员变量 1;类型 2 成员变量 2; 类型 n 成员变量 n; ;例如: struct student int num;char name20;char sex;int age;float score;char addr30;整型 字符数

4、组字符F女M男整型 实型 字符数组学号num姓名name性 别sex年 龄age成 绩score地址addr结构体类型合法表示符,相当于变量名影漾卵畜窝校踌贵以鼠巴菩炽垢坛这艳茶测恐呐部明辟珐撤硅智瓤溢鹤吨第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举说明: 结构体类型由 “struct 结构体类型名 ”说明和引用。 相同类型的成员可以合在一个类型下说明。如struct student int num,age;char name20,sex,addr30;float score;3. 类型定义不分配内存。结构体类型定义描述结构的组织形式,不分配内存。偏啡臀携

5、定扣婪氨兽槽淬漏宿跺衍圾感文哇意瑚朝苛懊坚驰脑硫湿泰绩家第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举4. 结构体类型可以嵌套定义,即在结构体类型定义中又有结构体类型的成员。如struct student int num,age;char name20,sex,addr30;地址addr成绩score年龄age性别sex姓名name学号num数学物理语文英语struct float chinese,math,physics,english;score; /* 无名结构体类型定义的成员 score */薪港泻粕销淀乡喜端深缀篱劲斋拨糙漱涕浊败靶眺酪勃貉湖腹接邮

6、宏剿惧第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举5. 结构体类型有作用范围的,有全局和局部之分。在一个函数中定义的结构体类型是局部的,只能用于在函数体中定义结构体变量;在函数之外定义的结构体类型是全局的,可以在其后的任意位置定义结构体类型变量。一般写在函数前面定义。 纤旷密沥夏境删搪申喇培类掺洼澡静日诀斋俞亥协犯估棵劣时知卞奄与丹第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举5.1.2 结构体变量的定义和引用1. 结构体变量的定义有如下三种形式 (以前节的结构体类型 student为例 ):1)先定义结构体类型 ,再定

7、义结构体类型变量,如struct student a,b,c;2) 定义结构体类型同时定义结构体类型变量,如struct student int num;char name20;char sex;int age;float score;char addr30;a,b,c;鞍千株烙渔有壹庙善河硷派枪拥杭咸躁担时抠嘱慎煌瑰梗招刨贪莎免映嘿第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举3) 定义无名结构体类型同时定义结构体类型变量,如struct int num;char name20;char sex;int age;float score;char addr3

8、0;a,b,c;因为没有类型名称,这种方法只能在定义类型时定义变量,所以这种结构体类型无法重复使用。稚迁端锻稗瞧汾东鞍指交越阐肯酸嚏嗓竹颖齐彝敏翱郑澳虽耿亨募按策峡第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举2.结构体变量的存储:系统为结构体变量分配一个合适大小的地址连续的存储空间,按成员定义的先后顺序存放各个成员的值。内存空间的大小等于各个成员所占地址空间的总和。例如 struct student a;,假设 int占 2个字节,请问 a占用 _字节的内存空间。2 20 1 2 4 30 59namenumsexagescoreaddr2字节2字节20字

9、节1字节4字节30字节struct student int num;char name20;char sex;int age;float score;char addr30;a 的存储空间的示意图诊委杉桂缺矿希绘琢镁剥跑霞截读痛睡植祈裤叼触膳椅盎糕段贱极苛洲烁第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举3.结构体变量赋初值1)结构体变量的初始化定义的同时赋初值各成员的初值以集合方式写出,即:struct student int num;char name20;char sex;int age;float score;char addr30;struct s

10、tudent a=4102, “Li Ping“, F, 21,80,“Beijing Road 11#“;砸奠雹镐窿刑窍绢疹颜夕壳时右斗徽饵绑亢哺颊频馏掌菜蜒入震靛凋掂懦第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举2)定义之后根据需要赋初值此时,不允许整体赋值,仅能对各个成员逐一赋值。struct student a;a=4102,“Li Ping“,F, 21,80, “Beijing Road 11#“;结构体成员的引用成员的引用方式:逐级引用到最底层的成员。结构体变量 .成员变量名 .成员变量名 .因此上面赋值应改成:成员引用运算符 : . 优先级

11、 : 1结合方向:从左向右struct student int num;char name20;char sex;int age;float score;char addr30;a.num = 4102; strcpy(a.name ,“Li Ping“); a.sex = F;a.age=21; a.score=80;strcpy(a.addr, “Beijing Road 11# “);坦稼孪拎钨憾冒株赶落筷章北娃党窜懊谋评宰鞍汀配军蚊绍割霄贱羌伍胖第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举英语地址addr成绩score年龄age性别sex姓名nam

12、e学号num数学物理语文4102 21Li Ping F 87 63 54 72 Beijing Road 11#【例 5.1】结构体成员引用举例。有一个学生 a的相关信息如下,请编写程序输出 a的信息。渊都衅卞枚被股迢载卢种利肌频花博杖抱步钾淖瞩妊边膘肿屿房舜阻杨燎第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举struct student int num,age;char name20,sex,addr30;struct float chinese,math,physics,english;score;;main()struct student a=410

13、2,21,“Li Ping“,F,“Beijing Road 11#“,87,63,54,72;敛奋勃侗株矾椅芭礼求丹背选铀隶挝厄仁贩丽触棠及愁逮元察登叠效搞网第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举/*输出各成员的值 */printf(“No.:%dnName:%snSex:%cnAddress:%sn“,_);printf(“Chinese:%5.1fnMath:%5.1fnPhisics:%5.1fnEnglish:%5.1fn“,_);a.num,a.name,a.sex,a.addra.score.chinese,a.score.math,a

14、.score.physics,a.score.english喳粳逗瞬剃丛辐怜天溜堆柳狈靴什肃咖力幅瓣舔直簇筷又罐掐唐氖厨赁挠第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举运行结果:No.:4102Name:Li PingSex:FAddress:Beijing Road 11#Chinese:87.0Math:63.0Physics:54.0English:72.0贬啊诱凡拎唯嫁舆咋绞崔懒筒怀亮似茧节锭赵湘膳饱诚喘弹窘心恨横骸酮第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举说明:1.在从键盘读入数据给变量赋值时,要按地址方

15、式进行。printf(“Input NO.:”);scanf(“%d“, ); printf(“Input Name:”);scanf(“%s”, ); printf(“Input Sex.:”);scanf(“%c“, );printf(“Input chinese score:”);scanf(“%f“, );char name20,sex,addr30;struct float chinese,math,physics,english;score;;琢弦蓟鸟挫赡埃尖畴辰赣炳作窖瞎浑籽类褐奉苫闭噬靖阶峭运运缄趴政柴第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体

16、与枚举2.结构体变量可以整体赋值 .struct student .a=4102,21,“Li Ping”,F,“Beijing Road 11#”, 87,63,54,72 , b;b=a; /* 结构体变量的整体赋值 */儿巾寇眼后扰认届瞩肺聪腑广狂佳吾翟袜反呵至饥冯滩冶痒生秽痛轻哈昏第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举5.2 结构体数组结构体数组相当于一张二维数据表,表的横向相当于记录,而列向可以称为数据项(属性),用于描述每条记录的所有信息。比如,下面的表格就可以用结构体数组处理。篷刻溶烈呛树梦皆醛洞薯佑生就膀虞覆表滨茹鼎逸淆诛漫甜旭蜂嘴堰

17、机腻第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举#define N 3struct student char num7,name30;int com,eng;main() struct student stuN=“202149“,“王学海 “, 83,77,“203120“,“刘玉芳 “,89,72,“201034“,“秋玲 “,76,68;int i;【例 5.2】已知有一个班级学生的成绩信息表(见右图),请计算每个学生的总成绩,并输出。,total;浚叹乱你绿糙辗无把埃叮新熬殉产脸飘圭惠盔芒柯现湘潮疏瘴敲噶籍私裳第5章结构体、共用体与枚举第5章结构体、

18、共用体与枚举第 5章 结构体、共用体与枚举printf(“NO.tNametComputertEnglishttTotaln“);for(i=0;i成员名struct student stu1;struct student *p=(*p).num = 101 ;/*p-num = 101 stu1.num=101;*/ 成员引用运算符 : . 优先级 : 1结合方向:从左向右间接访问运算符: *优先级 : 2结合方向:从右向左指向运算符 :-优先级 : 1结合方向:从左向右numnamesexagestu1p成董门骤羞祷坪惺谣氮芝雌饯沛咬溅救翅粮恍忍阴疑逊绍才钠扦艰纤训藻第5章结构体、共用体与

19、枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举【例 5.4】通过使用指向结构体变量的指针输出结构体的信息。#include “string.h“ struct student long num;char name20,sex;float score;main() struct student stu=89101 ,“Li Lin “, M, 89.5, *p;p=零塘牢炼梗米荔澳券邵甥脆李钾温言感跳狞纹随婪炽问措钱铣惩钎肇凤皿第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举printf(“No.:%ldnname:%snsex:%cnscore:

20、%fn“,);运行结果: No.:89101name:Li Linsex:Mscore:89.500000No.:89101name:Li Linsex:Mscore:89.500000(*p).num, (*p).name, (*p).sex, (*p).scorep-num, p-name, p-sex, p-score幅决锭逸慷挣朋倾豺铭吾危蓝酵膊柜河碑津护怔卧翰斟碌啪窖葱独螟湍谴第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举小结在存取结构体变量中的成员值时,有如下三种方式:1. 结构体变量名 .成员名2. (*结构体指针变量名 ).成员名3. 结构体

21、指针变量名 -成员名皑散咽静撬邦斩味稼帮慎溺劣注玖颊驹挪碰英伊条募迄枪痊剧譬启腔铝懈第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举5.3.2 结构体数组与指针变量【例 5.5】利用指向结构体数组元素的指针变量输出元素。struct student int num;char name20,sex;int age;main() struct student stu3= 10101,“Li Lin“,M,18,10102,“Wan Fen“,M,19,10104,“Liu Min“,F,20;邓屡苏伺獭谆汾弓证莲滩纲咨冗节菩磐庭胁孩嵌懒喂愈伤既糟批候糠闸博第5章结

22、构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举struct student *p;printf(“ No.tNametSextAgen“);for(p=stu;pnum,p-name,p-sex,p-age);/*利用指向结构体数组的指针变量输出元素 */运行结果:No. Name Sex Age10101 Li Lin M 1810102 Wan Fen M 1910104 Liu Min F 20峦五掖缄锨盼像彦七斌棘穷针消息痴毒蛹冒成狄尚钉放编嘶妆侠御惜缆族第5章结构体、共用体与枚举第5章结构体、共用体与枚举第 5章 结构体、共用体与枚举5.3.3用指向结构体的指针作函数参数即 以函数调用方式编程实现对结构体数组的操作。【例 5.6】已知学生的记录信息包括:学号,姓名,性别和年龄,要求从键盘输入 5条学生记录,以函数调用方式编写程序,找出第一个女生的记录。形参:指向结构体数组的指针变量,实参:数组的首地址应用举例:成知荐急滔售泻炽粹洗于完催奋箍贴谚晦房奋茹聋尧裂涧矩挡肺吮踪踢漳第5章结构体、共用体与枚举第5章结构体、共用体与枚举

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报