第11章 构造数据类型

上传人:沈*** 文档编号:244099207 上传时间:2024-10-02 格式:PPT 页数:41 大小:929KB
返回 下载 相关 举报
第11章 构造数据类型_第1页
第1页 / 共41页
第11章 构造数据类型_第2页
第2页 / 共41页
第11章 构造数据类型_第3页
第3页 / 共41页
点击查看更多>>
资源描述
,*,单击此处添加标题,单击此处添加标题,*,第,11,章 构造数据类型,主讲教师:郑立垠,计算机与通信工程学院 计算机应用技术系,本章主要内容,结构体,共用体,枚举类型,用户定义类型,回顾,C,数,据,类,型,指针类型,空类型,void,构造类型,数组,基本类型,字符类型,char,实型,单精度型,float,双精度型,double,整 型,短整型,short,长整型,long,整型,int,只能定义单一的数据类型,反映事物单一属性,如定义学生成绩:,float score;,存放相同数据类型的一组数据,如:,float score30;,问题的提出,一个学生的信息有,学号、姓名、性别、年龄、成绩,等,一本图书的信息有,分类编号、书名、作者、出版社、出版日期、价格、库存量,等,如何描述这些,类型不同,的,相关,数据?,问题:,学号,姓名,性别,年龄,成绩,1001,张三,男,19,90,1002,李四,女,21,87,1003,王五,男,18,96,问题的提出,使用一维数组,张三,李四,王五,赵六,麻七,F,M,F,M,F,1001,1002,1003,1004,1005,19,21,18,20,19,解决方案:,age,no,sex,name,不能建立数据间的关系,90,87,96,87.5,76,score,no,name,sex,age,score,独立的变量表示:,数据项之间无关联,问题的提出,使用多维数组,解决方案:,张三,李四,王五,赵六,麻七,F,M,F,M,F,1001,1002,1003,1004,1005,19,21,18,20,19,90,87,96,87.5,76,age,no,sex,name,score,C,语言不允许一个数组包含多种数据类型,问题的提出,解决方案:,C,语言引入了称为结构体的数据存储方式,“,结构体,”,是一种构造数据类型,它是由若干数据项组合而成的复杂数据对象,这些数据项称为,结构体的,成员。,no,name,sex,age,score,结构体变量表示:,数据项为一个整体,结构体类型定义,struct,结构体类型名,数据类型名,1,成员名,1,;,数据类型名,2,成员名,2,;,数据类型名,n,成员名,n,;,;,struct,是关键字,不能省略,合法标识符,可省,:,无名结构体,成员类型可以是,基本型或构造型,以分号,;,结尾,struct,Student,char no9;/,学号,char name20;/,姓名,char sex;/,性别,unsigned,int,age;/,年龄,float score;/,成绩,;,struct,Date,short,year;/,年,short,month;/,月,short,day;/,日,;,注意:,结构体类型只是用户自定义的一种,数据类型,,用来定义描述结构的组织形式,不分配内存,,只有用它来定义某个变量时,才会为该变量分配结构类型所需要大小的内存单元。,结构体变量定义,struct,结构体类型名,数据类型名,1,成员名,1,;,数据类型名,n,成员名,n,;,;,struct,结构体类型名,变量列表,;,先定义结构类型,再定义结构变量,struct,Student,char no9;,char name20;,char sex;,unsigned,int,age;,float score;,;,struct,Student,stu1,stu2,;,结构体变量定义,几种错误的定义方法:,struct,stu,;,没有结构体类型名,Student,stu,;,缺省,struct,关键字,struct,Point,p;,struct,Point,int,x,y;,;,结构类型,Point,定义在后,结构体变量定义,定义结构体类型的同时定义结构体变量,struct,结构体类型名,数据类型名,1,成员名,1,;,数据类型名,n,成员名,n,;,变量名列表,;,struct,Student,char no9;,char name20;,char sex;,unsigned,int,age;,float score;,stu1,stu2,;,struct,char no9;,char name20;,char sex;,unsigned,int,age;,float score;,stu1,stu2,;,或,无名结构体定义,结构体变量定义,成员可以是结构体,结构体可以嵌套,struct,date,int,month;,int,day;,int,year;,;,struct,student,int,no;,char name20;,struct,date,birthday;,stu,;,struct,student,int,no;,char name20;,struct,date,int,month;,int,day;,int,year;,birthday,;,stu,;,no,name,birthday,month,day,year,结构体变量的引用,引用规则:,不能整体引用,只能引用变量的,成员,引用方式:,结构体变量名,.,成员名,成员,(,分量,),运算符,结合性,:,从左向右,struct,student,char no9;,char name20;,char sex;,unsigned,int,age;,float score;,stu1,stu2,;,if(,stu1=stu2,),.,(,),stu1.score=85.5;,stu1.age=stu2.age;,strcpy(stu1.no,“09122414”;),结构体变量的引用,可以将,一个结构体变量赋值给另一个结构体变量,结构体嵌套时,逐级引用,struct,student,int,no;,char name20;,struct,date,int,month;,int,day;,int,year;,birthday,;,stu1,stu2;,stu2=stu1;(),stu1.birthday.month=12;,结构体变量名,.,成员名,.,子成员名,最低级子成员名,结构体变量的初始化,定义,结构体变量时给结构体成员赋值,struct,结构体类型名 初值表,;,struct,结构体类型名 变量名,=,成员,1,的值,,,成员,n,的值,;,注意:,赋初值时,,中间的数据顺序必须与结构体成员的定义顺序一致,否则就会出现混乱。,struct,Student,stu,=“12022325,YangFan,M,19,90;,no,name,sex,age,score,struct,Student,stu,=19,YangFan,M,“12022325,90;,struct,date,int,year;/,年,int,month;/,月,int,day;/,日,;,struct,Stu_Info,char no9;/,学号,char name20;/,姓名,char sex;,/,性别,struct,date birthday;,/,生日,float score;/,成绩,;,struct,Stu_Info,stu,=20120306,ZhangMing,M,1994,12,10,1,90;,结构体变量的赋值,strcpy,(stu1.no,stu.no,);,strcpy,(stu1.name,stu.name,);,stu1.sex=,stu.sex,;,stu1.age=,stu.age,;,stu1.score=,stu.score,;,struct,Student,stu,;,strcpy,(,stu.no,“09122424);,strcpy,(,stu.name,“,XuTeng,);,stu.sex,=M;,stu.age,=21;,stu.score,=90;,struct,Student stu1;,stu1=,stu,;,如果在定义结构体变量时并未对其赋初始值,那么在程序中要对它赋值的话,就只能一个一个地对其成员,逐一赋值,,或者,用已赋值的同类型的结构体变量对它赋值,逐一赋值,利用已赋值的结构体变量赋值,结构体变量应用举例,【,例,】,计算某个学生,5,门课的平均成绩,最高分和最低分,/chap11ex1.c,#include,struct,Student,float score5;,float,avescore,maxscore,minscore,;,;,int,main(),int,i;,struct,Student m;,printf,(input the score of five course:n);,for(i=0;i 5;i+)/,输入,5,门课的成绩,scanf,(%f,&,m.scorei,);,m.avescore,=0;,m.maxscore,=m.score0;,m.minscore,=m.score0;,for(i=0;i,m.maxscore,),m.maxscore,=,m.scorei,;,if(,m.scorei,m.minscore,),m.minscore,=,m.scorei,;,m.avescore,/=5;,printf,(“,avescore,=%4.1f,maxscore,=%4.1f,minscore,=%5.1fn,m.avescore,m.maxscore,m.minscore,);,运行结果,(,设,5,门课的成绩为:,75 80 86 90 68),:,avescore,=79.8,maxscore,=90.0,minscore,=68.0,&,m.scorei,的运算顺序:,&,m.scorei,注:,.,和,同优先级,具有左结合性,高于,&,的优先级,结构体数组,结构体数组的每一个元素都是具有相同结构体类型的下标结构变量,结构体数组的定义,形式一:,struct,Student,char no9,name20,sex;,unsigned,int,age;,float score;,;,struct,Student stu10;,形式二:,struct,Student,char no9,name20,sex;,unsigned,int,age;,float score;,stu10;,形式三:,struct,char no9,name20,sex;,unsigned,int,age;,float score;,stu10;,结构体数组与二维表的对应关系,结构体数组就相当于一张,二维表,,表的框架对应的就是某种结构体类型,表中的每一列对应该结构体的成员,表中每一行信息对应该结构体数组元素各成员的具体值,表中的行数对应结构体数组的大小。,no,name,sex,age,score,结构体类型,Student,stu0,stu1,stu9,struct,Student,char no9;,char name20;,char sex;,unsigned,int,age;,float score;,stu10;,结构体数组的初始化,基本格式:,struct,结构体类型 数组,size=,初值表,1,,,,,初值表,n,;,例:,struct,Student stu3=20020306,ZhangMing,M,18,90,20020307,WangHai,M,17,85,20020308,LiHong,F,18,95;,分行初始化,全部初始化时维数可省,struct,Student stu3=20020306,ZhangMing,M,18,90,20020307,WangHai,M,17,85,20020308,LiHong,F,18,95 ;,顺序初始化,结构体数组的引用,引用格式:,结构体数组名,下标,.,成员名;,struct,Student,char no9;,char name20;,char sex;,unsigned,int,age;,float score;,stu1
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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