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

上传人:无*** 文档编号:244597037 上传时间:2024-10-05 格式:PPT 页数:49 大小:248.50KB
返回 下载 相关 举报
第5章 结构体、共用体与枚举_第1页
第1页 / 共49页
第5章 结构体、共用体与枚举_第2页
第2页 / 共49页
第5章 结构体、共用体与枚举_第3页
第3页 / 共49页
点击查看更多>>
资源描述
*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第5章,结构体、共用体与枚举,教学目标:,通过本章学习,要求学生能熟练运用结构体这一新的数据结构编制较复杂的应用程序。同时掌握共用体、枚举类型和用户自定义类型typedef的使用方法。,本讲重点:,结构体变量的定义、引用、初始化;,2typedef自定义结构体类型的方法。,教学方法:,理论教学与实践教学相结合。,獭惺松抹超狙稽些秋贞袭惶惕中勾钙当杏科疮朔彰罢舶睬贬值抵汤网隆洋第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,第5章 结构体、共用体与枚举,5.1 结构体类型与变量,5.2 结构体数组,5.3 结构体与指针,5.4 自定义类型,5.5 共用体类型与变量,5.6 枚举类型与变量,5.7 程序设计举例,询卿帘瑞捍妻谆断启蛊你伪涡挎富计肖艳枢靛俏生蒸蜀晨猴丫宅廊著萧牲第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,姬原番摆屋奈反碰芳炊柞汽靴距嘛誓偏庆你惭忍沈元勋跪涸瘁湍柠籍涂跌第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,一组类型相同的相关的数据我们可以用数组来存储,而类型不同又相关的数据如何来处理呢?,学号num,姓名name,性别sex,年龄age,成绩score,地址addr,C引入一种能集中不同数据类型于一体的数据类型结构体类型,该类型由用户自己定义。,5.1 结构体类型与变量,整型,字符,数组,字符,f女,m男,整型,实型,字符数组,撰炸慑老关扔坚插饭沦谦后看辉厉渭尖雨堕孟妈家吵差灾瘴佑津姚巳榴晨第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;,;,整型,字符,数组,字符,F女,M男,整型,实型,字符数组,学号num,姓名name,性别sex,年龄age,成绩score,地址addr,结构体类型,合法表示符,相当于变量名,影漾卵畜窝校踌贵以鼠巴菩炽垢坛这艳茶测恐呐部明辟珐撤硅智瓤溢鹤吨第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,说明:,结构体类型由“struct 结构体类型名”说明和引用。,相同类型的成员可以合在一个类型下说明。如,struct student,int num,age;,char name20,sex,addr30;,float score;,;,3.类型定义不分配内存。,结构体类型定义描述结构的组织形式,不分配内存。,偏啡臀携定扣婪氨兽槽淬漏宿跺衍圾感文哇意瑚朝苛懊坚驰脑硫湿泰绩家第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*/,薪港泻粕销淀乡喜端深缀篱劲斋拨糙漱涕浊败靶眺酪勃貉湖腹接邮宏剿惧第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,5.结构体类型有作用范围的,有全局和局部之分。在一个函数中定义的结构体类型是局部的,只能用于在函数体中定义结构体变量;,在函数之外定义的结构体类型是全局的,可以在其后的任意位置定义结构体类型变量。,一般写在函数前面定义。,纤旷密沥夏境删搪申喇培类掺洼澡静日诀斋俞亥协犯估棵劣时知卞奄与丹第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,5.1.2 结构体变量的定义和引用,1.结构体变量的定义,有如下三种形式(以前节的结构体类型 student为例):,1)先定义结构体类型,再定义结构体类型变量,如,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章 结构体、共用体与枚举,3)定义无名结构体类型同时定义结构体类型变量,如,struct,int num;,char name20;,char sex;,int age;,float score;,char addr30;,a,b,c;,因为没有类型名称,这种方法只能在定义类型时定义变量,所以这种结构体类型无法重复使用。,稚迁端锻稗瞧汾东鞍指交越阐肯酸嚏嗓竹颖齐彝敏翱郑澳虽耿亨募按策峡第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,2.结构体变量的存储:系统为结构体变量分配一个合适大小的地址连续的存储空间,按成员定义的先后顺序存放各个成员的值。内存空间的大小等于各个成员所占地址空间的总和。,例如 struct student a;,假设int占2个字节,请问a占用_字节的内存空间。,2201243059,name,num,sex,age,score,addr,2字节,2字节,20字节,1字节,4字节,30字节,.,struct student,int num;,char name20;,char sex;,int age;,float score;,char addr30;,;,a 的存储空间的示意图,诊委杉桂缺矿希绘琢镁剥跑霞截读痛睡植祈裤叼触膳椅盎糕段贱极苛洲烁第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,3.结构体变量赋初值,1)结构体变量的初始化定义的同时赋初值,各成员的初值以集合方式写出,即:,struct student,int num;,char name20;,char sex;,int age;,float score;,char addr30;,;,struct student a=4102,Li Ping,F,21,80,Beijing Road 11#;,砸奠雹镐窿刑窍绢疹颜夕壳时右斗徽饵绑亢哺颊频馏掌菜蜒入震靛凋掂懦第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,2)定义之后根据需要赋初值,此时,不允许整体赋值,仅能对各个成员逐一赋值。,struct student a;,a=4102,Li Ping,F,21,80,Beijing Road 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章 结构体、共用体与枚举,英语,地址addr,成绩score,年龄age,性别sex,姓名name,学号num,数学,物理,语文,4102,21,Li Ping,F,87 63 54 72,Beijing Road 11#,【例5.1】结构体成员引用举例。,有一个学生a的相关信息如下,请编写程序输出a的信息。,渊都衅卞枚被股迢载卢种利肌频花博杖抱步钾淖瞩妊边膘肿屿房舜阻杨燎第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,struct student,int num,age;,char name20,sex,addr30;,struct,float chinese,math,physics,english;,score;,;,main(),struct student a=4102,21,Li Ping,F,Beijing Road 11#,87,63,54,72;,敛奋勃侗株矾椅芭礼求丹背选铀隶挝厄仁贩丽触棠及愁逮元察登叠效搞网第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,/*输出各成员的值*/,printf(No.:%dnName:%snSex:%cnAddress:%sn,_);,printf(Chinese:%5.1fnMath:%5.1fnPhisics:%5.1f,nEnglish:%5.1fn,_,_);,a.num,a.name,a.sex,a.addr,a.score.chinese,a.score.math,a.score.physics,a.score.english,喳粳逗瞬剃丛辐怜天溜堆柳狈靴什肃咖力幅瓣舔直簇筷又罐掐唐氖厨赁挠第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,运行结果:,No.:4102,Name:Li Ping,Sex:F,Address:Beijing Road 11#,Chinese:87.0,Math:63.0,Physics:54.0,English:72.0,贬啊诱凡拎唯嫁舆咋绞崔懒筒怀亮似茧节锭赵湘膳饱诚喘弹窘心恨横骸酮第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,说明:,1.在从键盘读入数据给变量赋值时,要按地址方式进行。,printf(“Input NO.:”);,scanf(%d,);,printf(“Input Name:”);,scanf(“%s”,);,printf(“Input Sex.:”);,scanf(%c,);,printf(“Input chinese score:”);,scanf(%f,);,&a.num,a.name,&a.sex,&a.score.chinese,/数组名是首地址*/,struct student,int num,age;,char name20,sex,addr30;,struct,float chinese,math,physics,english;,score;,;,琢弦蓟鸟挫赡埃尖畴辰赣炳作窖瞎浑籽类褐奉苫闭噬靖阶峭运运缄趴政柴第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,2.结构体变量可以整体赋值.,struct student,.,a=4102,21,“Li Ping”,F,“Beijing Road 11#”,87,63,54,72,b;,b=a;/*结构体变量的整体赋值*/,儿巾寇眼后扰认届瞩肺聪腑广狂佳吾翟袜反呵至饥冯滩冶痒生秽痛轻哈昏第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,5.2 结构体数组,结构体数组相当于一张二维数据表,表的横向相当于记录,而列向可以称为数据项(属性),用于描述每条记录的所有信息。比如,下面的表格就可以用结构体数组处理。,篷刻溶烈呛树梦皆醛洞薯佑生就膀虞覆表滨茹鼎逸淆诛漫甜旭蜂嘴堰机腻第5章 结构体、共用体与枚举第5章 结构体、共用体与枚举,#define N 3,struct student,char num7,name30;,int com,eng;,;,main(),struct student stuN=202149,王学海,83,77,203120,刘玉芳,89,72,201034,秋玲,76,68;,int i;,【例5.2】已知有一个班级学生的成绩信息表(见右图)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!