第五章复杂构造数据类型.ppt
《第五章复杂构造数据类型.ppt》由会员分享,可在线阅读,更多相关《第五章复杂构造数据类型.ppt(40页珍藏版)》请在三一办公上搜索。
1、2023/9/11,C语言程序设计,1,上节回顾,一维数组:,二维数组:,数组与函数/指针的混合使用,字符数组:,元素:,int a6;,初始化:,int a6=1,3,5,7,9,2;,a0a5,int a6,n;for(n=0;n6;n+)scanf(“%d”,an);,元素:,初始化:,b00a12,int b23,int b23=1,3,5,7,9,2;,int b23,m,n;for(n=0;n2;n+)for(m=0;m3;m+)scanf(“%d”,bnm);,char c6;,初始化:,char c6=G,o,o,d;,char c6=“good”;,char c6=“good
2、”;,输入:,输入:,输入/输出:,gets();puts();%s,2023/9/11,C语言程序设计,2,第五章 复杂构造数据类型,5.1 结构体5.2 共用体5.3 枚举类型*5.4 链表(不讲),2023/9/11,C语言程序设计,3,学生,5.1 结构体5.1.1 结构体的引出及使用,这些项目之间是彼此联系的,应组织定义成一个组合项,统一表示和使用,见下例:,一、结构体的引出,某一个学生的具体信息表示:,思考:实际应用中还有哪些具备多个属性的数据?,struct student int num;char name8;char sex;int age;float score;char
3、addr20;,2023/9/11,C语言程序设计,5,这种由若干个不同类型的数据项组成的组合类型,在C语言中叫做结构体类型,相当于其它语言中描述的“记录”。结构体类型在使用之前应先定义其类型结构,然后再定义该类型变量,才能使用。,2、结构体的定义,2023/9/11,C语言程序设计,6,结构体是由一些逻辑相关,但数据类型不同的分量组成的一组数据。,注意:用户需要先定义结构体类型,之后才能定义结构体变量,注意不要忘了分号,关键字,用户定义的标识符,struct student int num;char name8;char sex;int age;float score;char addr20
4、;,2023/9/11,C语言程序设计,7,3、定义结构体变量的方法,(1).先定义结构体类型,再定义变量 struct student char name10;int age;float s1,s2;,结构体变量st1和st2各自都需要20个字节的存储空间,nameages1s2,nameages1s2,数据类型 变量列表;,struct student,st1,st2,10个字节2个字节4个字节4个字节,(2).定义结构体类型同时定义变量 struct student char name10;int age;float s1,s2;st1,st2;,(3).直接定义结构体变量 struct
5、 char name10;int age;float s1,s2;st1,st2;,【说明】:(1)结构体变量具有结构体类型的一切特征 在内存中结构体变量占有一片连续的存储单元 存储单元的字节数可用sizeof 运算符算出 printf(“%dn”,sizeof(struct student);printf(“%dn”,sizeof(st1);,birthday?,(year、month、day),2023/9/11,C语言程序设计,9,(2)结构体类型可以嵌套定义 例:struct date int year;int month;int day;struct stud char name10
6、;struct date birthday;float s1,s2;,或:struct stud char name10;struct date int year;int month;int day;birthday;float s1,s2;,2023/9/11,C语言程序设计,10,4、结构体变量的引用,(1).引用结构体变量中的成员 格式:结构体变量名.成员名,struct student char name10;int age;float s1,s2;,注意:一般是对结构体变量的各个成员分别进行赋值st1=“Mary”,21,78,86;这样的整体赋值是不允许的!,struct stud
7、ent st1;st1.name=“Mary”;st1.age=21;st1.s1=78;st1.s2=86;,成员运算符,gets(st1.name);,struct date int year;int month;int day;struct stud char name10;int age;struct date birthday;float s1,s2;,struct stud st2;int age,year;strcpy(st2.name,“John”);st2.age=20;st2.birthday.year=1980;st2.birthday.month=11;st2.birt
8、hday.day=23;st2.s1=89;st2.s2=95;age=24;year=2000;,(2).结构体变量使用说明:相同类型的结构体变量可以进行整体赋值,struct date int year;int month;int day;struct stud char name10;int age;struct date birthday;float s1,s2;,struct stud st1,st2,st3;strcpy(st2.name,“John”);st1.age=20;st1.birthday.year=1980;st1.birthday.month=11;st1.birt
9、hday.day=23;st1.s1=89;st1.s2=95;st2=st1;strcpy(st2.name,“Mary”);st3.age=20;st3.birthday=st1.birthday;st3.s1=76;st3.s2=85;,C语言不允许结构体变量整体进行输入和输出,只能对结构体变量的成员进行输入和输出,gets(st1.name);scanf(“%d”,2023/9/11,C语言程序设计,14,可以定义与结构体成员同名的变量,他们之间不会发生混乱。,struct student stu;int age,year;stu.age=20;stu.birthday.year=19
10、80;age=24;year=2000;,2023/9/11,C语言程序设计,15,5、结构体变量的初始化,struct student char name10;int age;float score1,score2;st1=“Mary”,21,78,86;,struct stud char name10;struct date birthday;float score1,score2;struct stud st2=“John”,1980,11,23,89,95;,struct student char name10;int age;float score1,score2;struct st
11、udent st1;st1=“Mary”,21,78,86;,这是初始化,正确,这是赋值,错误C不允许这么做,2023/9/11,C语言程序设计,16,5.1.2 结构体数组的引出及使用,思考:如何表示100个学生的姓名、年龄、数学成绩以及语文成绩等信息?,2023/9/11,C语言程序设计,17,1、结构体数组的定义(1).先定义结构体类型 再定义结构体数组 struct student char name10;int age;float s1,s2;struct student st6;,(2).定义结构体类型的同时定义数组 struct student char name10;int a
12、ge;float s1,s2;st6;,(3).直接定义结构体数组 struct char name10;int age;float s1,s2;st6;,2023/9/11,C语言程序设计,18,2、结构体数组的初始化 将每个数组元素的数据用花括号 括起来,struct student char name10;int age;float s1,s2;struct student st3=,;,“Mary”,21,78,86,“Alex”,20,90,80,“Mike”,19,75,68,(2).数组元素之间可以整体赋值 也可以将一个元素赋给一个相同类型的结构体变量 struct studen
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 复杂 构造 数据类型

链接地址:https://www.31ppt.com/p-5991154.html