结构体与共同体.ppt
《结构体与共同体.ppt》由会员分享,可在线阅读,更多相关《结构体与共同体.ppt(44页珍藏版)》请在三一办公上搜索。
1、,第9章 结构体与共同体,9.1 结构体9.2 结构体数组9.4 共用体,9.1 结构体,确定该类型数据的表示形式、取值范围、存储结构及其允许参加的运算。在程序中每个变量在使用前要确定其类型,在前面所定义的类型都是标准类型。在前面介绍的内容均为系统定义类型,用户只要按要求用这些类型说明变量即可。,类型的作用,例如:int x;float y;char a30;,这些基本类型只能解决简单的问题,而实际应用中的类型是千变万化的。,简单类型(整、实、字)的变量是独立的,变量之间无内在的联系;数组类型虽能同时存放多个数据,但必须是同类型的。C允许用户按需求自己定义类型。,例如:在计算机等级考试管理系统
2、中,若每个考生 都有如下信息:,考号:长整型姓名:字符串性别:字符年龄:无符号整型报考等级:字符串成绩:实型,数据分属不同的类型,显然不能采用前面已介绍过的类型来处理。C语言提供了解决这类问题的类型结构体类型。,struct student1 int num;char name20;char class10;char sex;float score;,struct student2 int num;char name20;char class10;date birth;,struct date short year;short month;short day;,结构类型的定义,struct s
3、tudent1 stu1,stu2,方法1:,方法2:,struct student2 int num;char name20;char class10;date birth;stu1,stu2,在VC中若文件名*.cpp,用结构类型说明变量时可省略struct。,结构类型变量的定义,1.由于结构类型是一个复合类型,其由多个成员组成,因此不能访问结构体变量(同数组),只能按如下方法访问变量的成员。变量名.成员名 变量名.一级成员.二级成员(嵌套时),结构类型变量的访问,struct student1 stu1=2001802,李,计011,女,85.2;struct student2 stu2
4、=2001802,李,计011,女,12,3,1986,85.2;,scanf(%d,stu1.num);gets(stu2.name);stu1.sex=getchar();stu1.birth.day=12;printf(“%d”,stu1.birth.day);puts(stu2.name),2.对成员,可根据其类型进行相应的运算。,3.由于结构型变量的成员多,C允许两个同 类型的结构变量可互相整体赋值。,例如:struct s int no;float score;stu1,stu2=200123,76.5;stu1=stu2;,4.结构体变量中的各成员在内存中占一片连续的单元,其长度
5、为:各成员所占单元之和,5.不能在定义类型时给成员赋值。,struct stu long num=97031;char name20=li ming;char sex=m;student;,错,不能对类型赋值!,可用结构类型定义指针。即存放结构对象的首地址。,例如:struct student int num;char name20;char sex;float score;,struct student x,*p;p=,由于结构类型变量占用连续单元,故p存放num成员的首地址,指向结构体的指针,结构型变量.成员名 结构型指针成员名,访问成员时,有两种表示:,见P.198 例9.3,结构体变量
6、作为函数参数,因为结构体变量中的每个成员都被分配了存储单元,故当参数是结构体变量时,采用值传递方式,将实参的每个成员对应传递给形参成员。见P.200 例9.4,9.5,9.2 结构体数组,单个结构型变量没有实际的意义,可用简单变量来完成工作。仅当结构体与数组相结合时,才能解决复杂问题,弥补数组的缺点。,用结构类型定义数组。即每个数组元素是结构类型。见P.202-203,结构体数组的定义,stu1=97001;错误 stu1.num=97001;正确,1.可引用数组元素的成员,不能引用数组元素。因为每 个数组元素是结构类型。,2.同一结构体类型变量及数组元素之间可整体赋值。,struct stu
7、dent s1,s10;s1=s2;s1=s0;正确,结构体数组的访问,struct student int num;char name20;char class10;char sex;float score4;void main()struct student stu3;int j;,例如:输入/出3个学生的信息,每个学生的信息如下:学号,姓名,班级,性别,4门成绩。,for(j=0;j3;j+)scanf(“%d”,输出同上。,例程9-1:,某单位有3人参加04年计算机等级考试。现需将每名考生的准考证号、姓名、性别、报考级别和成绩录入计算机,并统计平均分和及格率。,例程9-02:利用指针访
8、问结构型数组。,9.3 链 表,一、链表的概述:,将数组与结构配合起来使用,可以解决复杂的数据结构,但数组仍需静态定义。,虽然可利用malloc函数动态分配存储单元,但这些动态分配的单元地址不连续,或只能按数组的形式分配单元,仍然不是完全动态分配。,C程序提供了链表类型来解决上述矛盾。,1、什么是链表?,一种动态分配的数据结构。即用指针变量和结构变量将非连续的数据块连成一个整体的一种数据结构。,例如:,A,B,C,上述三个变量间没有任何联系,若希望象数组那样,借助于一个变量的首地址,就能访问到其他变量。,将B的地址存放到A中,将C的地址存放到B中,将A的地址保存,这样就可以通过A变量找到其他变
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 与共 同体
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6056592.html