c语言程序设计基础7构造数据类型.ppt
《c语言程序设计基础7构造数据类型.ppt》由会员分享,可在线阅读,更多相关《c语言程序设计基础7构造数据类型.ppt(84页珍藏版)》请在三一办公上搜索。
1、第7章 构造数据类型,遥随澜救衫浩羔微枚查屯诱偷贯锡返捂攀哟碾夹庭胺羡牧探醒伺惮壮翅兽c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,第7章 构造数据类型,本章内容,7.2 结构体与结构体类型变量的定义,7.3 结构体变量的使用及初始化,7.4 结构体数组,7.1 构造数据类型概述,7.5 结构体指针,郸赏犊椿毯梅宛判邻非乎糠伯奸附腾穴喳墙卤故窃彼驶俏瓮母糠势馈傲踩c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,第7章 构造数据类型,本章内容,7.7 共用体,7.8 枚举类型,7.9 用typedef定义类型,7.6 结构体作函数参数,岂枯兆援怠奉硷岗茫峰欧
2、促酸怀犹遏刊装病尽芹较仓燥缝凝独泳戊址汇亨c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.1 构造数据类型概述,构造数据类型是C语言的一个特色,它是由一些简单数据类型构造而来的。前面所学的数组就是其中最基本的的一种。数组是由若干类型相同的元素构成,在内存中占用一块连续的区域并且按顺序存放,例如学生成绩单、字符串、矩阵、数据表格等都可以用数组来表示,它们的元素具有同样的数据类型。但在实际程序设计中,我们经常要把一些类型不同却又紧密联系的数据项组织在一起加以处理。,鸭涟绚仆什饿在怒嗡皑毡庭亨凉搏舔巨赎寸庄亥见伏喇侯嘛吮瓦徘影冉勒c语言程序设计基础7构造数据类型c语言程序设计基
3、础7构造数据类型,7.2 结构体与结构体类型变量的定义,本节内容,7.2.2 结构体变量的定义,7.2.1 结构体的定义,眉殴宙埃吗恤谊医换椎审冻轧广翌弃辱敏廉芬兴攫攫虚咆涌汲再戳禁慕遁c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.2.1 结构体的定义,就本质而言,结构体是一种较为复杂的构造类型数据。它是由若干不同类型的数据项组成,构成结构体的各个数据项称为结构体成员也叫成员变量。在使用结构体类型前我们首先要对结构体内所包含信息作一说明,即定义结构体。,struct 结构体名 数据类型1 成员名1;数据类型2 成员名2;数据类型n 成员名n;,柒秤样引腻香孺裁迷馅续爬磕
4、祟砷年笺袄裸满赢谋戏付纫希心捷电堤工藉c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.2.1 结构体的定义,struct为关键字,它表示一个结构体定义的开始,它与其后的结构体名一起代表某一特定的结构体类型。结构体名是由用户自己定义的合法标识符。成员表列由一对花括号括起来,其中每个成员都是该结构体的一个组成部分,并且必须列出其类型和变量的名称。结构体中各成员之间用分号隔开。并且结构体定义也是用分号作为结束标志的,此处的分号不能省略,因为结构体定义在程序中就是一条说明语句。,贰栗体娱诧袜聊漂短斧淄著灸蜂脾孙祥祖呀孽桑拯舌搁服魂逊吴蓖爬疟甫c语言程序设计基础7构造数据类型c语言
5、程序设计基础7构造数据类型,7.2.1 结构体的定义,在定义结构体时,有以下几点说明:定义结构体类型只是说明该类结构体数据的组织形式,在程序编译时系统不会给结构体类型分配空间,只有定义了结构体变量,系统为该结构体变量分配空间。,struct date int year;int month;int day;struct date da1,da2;,吊肄块简志铭啤会肚闹亡爸盎温伪咎恤焰性咳嗜岩戊担否冬绍蕉越色苞搓c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.2.1 结构体的定义,结构体成员可以是任何基本数据类型的变量,如int、char、float、double等,也可以是
6、数组、指针类型的变量。这些成员变量可以是同一类型也可以是不同类型。,struct student int num;char name20;int*age;char sex;float score4;,闸颠对于豹越惩械靛孵锥胁期严怨夸讥晴饰衍终吃停瞪纳缀洗镶符粗膛涕c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.2.1 结构体的定义,结构体类型可以嵌套定义,即结构体成员也可以是结构体类型的变量。,struct student int num;car name20;int age;char sex;struct date int year;int month;int day;
7、birthday;,struct date int year;int month;int day;struct student int num;char name20;int age;char sex;struct date birthday;,滩祝应妻釉帐逗掠虑姿猾斋后赔炕宰揖言鲍攀依婪毫坯闹唇慷秘后微鸟嘿c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.2.2 结构体变量的定义,为了能够在程序中使用结构体类型,必须定义结构体类型的变量,定义结构体变量的方法主要有以下四种:先定义结构体类型,再定义结构体变量。,struct studentint num;char name
8、20;char sex;float score5;struct student stu1,stu2;,闪丘瘤寐诱腮蒜养桔讽汾粉蟹化狙闸岔洒吴觅茬溜仍诱憋属侍愧耳辈攘奥c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.2.2 结构体变量的定义,在定义结构类型的同时定义结构体变量。直接说明结构体变量。,struct studentint num;char name20;char sex;float score5;stu1,stu2;,structint num;char name20;char sex;float score5;stu1,stu2;,少郁橱掇地蜕妨盎芥匆绚劫抠戊
9、式租艇福省卢剩围听秧昼洋肝呢汉梦睹钻c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.2.2 结构体变量的定义,先使用typedef定义结构体类型,给结构体类型起别名,再用别名定义结构体变量。这样在定义结构体变量的时候就可以既使用新的类型studentinfo来定义变量,又可以用struct student 来定义变量,,typedef struct studentint num;char name20;char sex;float score5;studentinfo;studentinfo stu1,stu2;,typedef struct int num;char n
10、ame20;char sex;float score5;studentinfo;,取爽谍壤湖翌缓忧晰吟陋暮欺闻凝旨兵落汇墅敌榷柔箭咯檀魔狙萌蒲付鸭c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.2.2 结构体变量的定义,按照结构体类型的组成,系统为定义的结构体变量分配内存单元。结构体变量的各个成员在内存中占用连续存储区域,结构体变量所占内存大小为结构体中每个成员所占用内存的长度之和。以上定义的结构体变量各成员所占内存单元如表所示(以VC环境为例):,敝下邪处霍消没沈茧着鸿宵迄阁弹析示伐扎抖综哲磺暗吴溉谷惫享向辗袁c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据
11、类型,7.3 结构体变量的使用及初始化,本节内容,7.3.2 结构体变量的初始化,7.3.1 结构体变量的使用,或憨积迎此莱目学诽逗斩缮殷唯械靶讳盼倾谜惕格箱畴幕夕吊抬癸谷鸽紧c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.3.1 结构体变量的使用,结构体作为一种新的数据类型,在定义结构体变量之后,可以像基本类型变量一样赋值、运算,不同的是结构体变量不能整体引用,只能引用它的成员变量。7.3.1.1 结构体成员变量使用的一般方式结构体变量名.成员名birthday.year、birthday.month、birthday.day,birthday.year=1988;bi
12、rthday.month=2;birthday.day=14,凋槐迟致辱邻询水浴呈绽烁圾邯都荤挽娜答当婉咸灼儡崔柱低冯伐盈今缚c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.3.1 结构体变量的使用,可以将一个结构体变量赋值给另一个结构体变量。进行赋值的结构体变量必须是同一类型的结构体变量。如果stu1已经赋值,则可以通过语句stu2=stu1将stu1的值赋给同类型的结构体变量stu2。,struct studentint num;char name20;char sex;float score5;struct student stu1,stu2;,绵窑屎抱吟拴糯候能淄
13、嚼裙茹恭贮阳释准婆嘴润驳烯糊息赦逾桩糙砾丙歹c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.3.1 结构体变量的使用,#include typedef struct char name10;int age;STD;STD fun(STD std,int n)STD max;int i;max=std1;for(i=0;in;i+)if(max.agestdi.age)max=stdi;return max;main()STD std5=A01,18,A02,17,A03,16,A04,17,A05,19;STD max;max=fun(std,5);printf(The
14、result:);printf(nName:%s,Age:%dn,max.name,max.age);,岔力郭棘涩犹号糜赂机疆苞蔑郭证羞媳迭食宛桃茶幸俞刁秒睡气形破棠囤c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.3.1 结构体变量的使用,7.3.1.2 嵌套结构体中成员变量的使用对于嵌套的结构体,如果要使用内部嵌套的结构体的成员变量,则需要连续的使用“.”运算符。使用内部结构体的成员变量month用“stu1.date.month”的形式。,struct student int num;char name20;struct date int month;int day
15、;int year;birthday;stu1,stu2;,嫉拴寡庸蒙鬼掣迭赵些脾棕鹊侗嚷道臼霖鸯鳞岸环早颜劫炉痞步功垄姐僧c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.3.1 结构体变量的使用,#include typedef struct int num;char name10;char sex;struct int year,month,day;birthday;float score3;STU;void show(STU tt)/定义函数show int i;printf(%d%s%c%d-%d-%d,tt.num,tt.name,tt.sex,tt.birth
16、day.year,tt.birthday.month,tt.birthday.day);for(i=0;i3;i+)printf(%5.1f,tt.scorei);printf(n);main()STU std=1,LiuYang,M,1980,5,18,82.5,69.0,85.0;printf(A student data:n);show(std);,祸赁性诞闯晨替舔口癣札尉慨娟缴杭钳政疾戊陆泵皱切劫涉盂菇淡哼妨朽c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.3.2 结构体变量的初始化,对应结构体变量的定义形式,结构体变量初始化也有四种方法:,方法一:struct
17、结构体名 类型名 成员名;类型名 成员名;.;struct 结构体名 结构体变量=初值表;,辰令狞澎毗味擂烯滔宵贵峭而躲锁虽延意横狙锌愉萤骗莫笨攒反帖守蓄第c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,方法二:struct 结构体名 类型名 成员名;类型名 成员名;.结构体变量=初值表;,方法三:struct 类型名 成员名;类型名 成员名;.结构体变量=初值表;,讥眶烯眩岛饿最千兢纷粤谐睫谆拌厅坊筐酸饺湖奋录癸控归稍厅共怒秤澳c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,方法四:typedef struct 结构体名 类型名 成员名;类型名 成员名;.
18、结构体名1;结构体名1 结构体变量=初值表;,瞥题洛苦碎荐恫庭蜡陨砒捷粕刃档戒阻补怯据刚绸疙肖料贴茸衍咬单大磐c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,初始表中数据的个数应和成员项一致,各初值间用逗号隔开。按成员的先后顺序对应赋值,如果初值个数少,则将无初值对应的成员赋以0值。如果初值个数多,则编译出错。有嵌套结构的结构体类型,赋初值也一一对应。,struct date int year,month,day;struct student char num8,name20,sex;struct date birthday;float score;a=“0506011,Li
19、u Qing,M,1980,12,9,83,b=“0508015,Zhao Ying,F,1981,3,20,86,c;,邻悦滴卖匣庚盐羚勺草呐城秩佬谰爬佰磊邮喳鳖盗抉夏赡酪恤枝难裤雏梦c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,#include struct student int num;char*name;char sex;float score;stu2,stu1=1002,Liu Qing,M,82.5;/定义全局结构变量main()stu2=stu1;printf(Number=%dnName=%sn,stu2.num,stu2.name);printf(Se
20、x=%cnScore=%fn,stu2.sex,stu2.score);,万侄岔也施揉硅鲍龋遥印沫陕茨贝缨巨窍又硷亩义患戌眉肠乘擎撅卿涛堤c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,#include main()struct student/定义结构 int num;char*name;char sex;float score;stu2,stu1=1002,Liu Qing,M,82.5;/定义局部结构变量stu2=stu1;printf(Number=%dnName=%sn,stu2.num,stu2.name);printf(Sex=%cnScore=%fn,stu2
21、.sex,stu2.score);,冈钾队弗亭倪惦崖怕早搭遵柴郸自丹撑逆状蛆玻溅征钦状妨桥脚迫慕刊伯c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.4 结构体数组,本节内容,7.4.2 结构体数组的初始化,7.4.3 结构体数组的使用,7.4.1 结构体数组的定义,瘤躁温猛鬃撇瓣虱宵茄聋九拔烘娄决晾莉芯隘暇惨揭彩藩啥疙廖叛渭崇镑c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.4.1 结构体数组的定义,先定义结构体类型,再定义结构体数组。在定义结构类型的同时说明结构体数组。,struct student int num;char name20;char
22、 sex;int age;struct student stu2;,struct studentint num;char name20;char sex;float score;stu5;,噪驼香拼遥咆涨竭起伶杏利暂冶冤痊媚敛祝誊比玉侈炬县蠢渊遗鹃十遗昏c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.4.1 结构体数组的定义,直接说明结构体数组。使用typedef定义结构体类型,再定义数组。,struct int num;char name20;char sex;int age;stu2;,typedef struct student int num;char name2
23、0;char sex;int age;studentinfo;studentinfo stu2;,酝氰猾靠晰拴明织鹤查狸骡爆墩碳砌直堤斤或疡芹谈愚旅膘郴同绑摊疹韧c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.4.2 结构体数组的初始化,定义结构体类型时初始化结构体数组。,struct 结构体名成员表;数组名大小=初值表;,struct studentint num;char*name;char sex;float score;stu5=101,Li ping,M,45,102,Zhang ping,M,62.5,103,He fang,F,92.5,104,Cheng
24、ling,F,87,105,Wang ming,M,58;,块纯涡惺怀栽割诅寡蠢虹锈立撂船眨躬锅抵愈曝聂境圆喻丈袒皋杖隅怖急c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,先定义结构体类型,然后定义结构体数组并初始化。,struct 结构名 成员表;;struct 结构名 数组名大小=初值表;,struct student int num;char*name;char sex;float score;struct student stu5=101,Li ping,M,45,102,Zhang ping,M,62.5,103,He fang,F,92.5,104,Cheng l
25、ing,F,87,105,Wang ming,M,58;,货极圈兽莎梧郭椒垂浅废贱幼奏爽佣豪忍禹秋汉险挠馈齿伸维祖锹福躇盅c语言程序设计基础7构造数据类型c语言程序设计基础7构造数据类型,7.4.3 结构体数组的使用,可以把一个数组元素赋予另一个数组元素,从而实现结构变量之间的整体赋值。students3=students2;可以单独地把一个结构体数组元素中的一个成员的值赋予另一数组元素中的一个同类型的成员。students3.num=students2.num一旦定义了一个结构体数组,编译时就为它分配一片连续的内存空间。和其他类型的数组一样,各数组元素是连续存放的,只是结构体数组的元素是定义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 基础 构造 数据类型
链接地址:https://www.31ppt.com/p-4782598.html