高级语言程序设计第9章用户自定义数据类型.ppt
《高级语言程序设计第9章用户自定义数据类型.ppt》由会员分享,可在线阅读,更多相关《高级语言程序设计第9章用户自定义数据类型.ppt(35页珍藏版)》请在三一办公上搜索。
1、第九章,用户自己建立数据类型,主要内容:,结构体类型共用体类型枚举类型链表,问题的提出:,有一张学生的成绩表如下所示。,100101 Li Fun M 18 87.5 Beijing100102 ZhangLi F 17 86 Xian100103 WangWu M 18 89 Dalian100104 ChenHua F 19 90 Shanghai100105 WuSong M 16 99 Shandong,Num name sex age score addr,如何表示和访问表中的数据?,每一列同类型,可以用数组表示。但访问一个学生的记录时需访问几个不同的数组,很麻烦。,需要将不同类型的
2、数据组成一个有机的整体,以便于引用。,9.1 定义和使用结构体变量,C语言用“结构体”把关系密切但类型不同的数据组织在一起,即封装起来,解决上述问题。结构体通常由不同数据类型的数据项组成,一般也称由不同成员组成,每个成员可以有不同的名字和数据类型。,声明一个结构体类型的一般形式为:struct 结构体名 成员表列;如:struct student int num;char name20;char sex;int age;float score;char addr30;,结构体名,类型名,成员名,9.1 定义结构体类型变量,可以采取以下3种方法定义结构体类型变量:(1)先声明结构体类型再定义变量
3、名 例如:struct student student1,student2;|结构体类型名 结构体变量名 定义了student1和student2为struct student类型的变量,即它们具有struct student类型的结构.,(2)在声明类型的同时定义变量,这种形式的定义的一般形式为:struct结构体名 成员表列 变量名表列;,例如:struct student int num;char name20;char sex;int age;float score;char addr30;student1,student2;,它的作用与第一种方法相同,即定义了两个struct stu
4、dent 类型的变量student1,student2,(3)直接定义结构体类型变量,其一般形式为:struct 成员表列 变量名表列;即不出现结构体名。,关于结构体的几点说明:,(1)对结构体中的成员(即“域”),可以单独使用,它的作用与地位相当于普通变量。(2)成员名可以与程序中的变量名相同,二者不代表同一对象。,(3)成员也可以是一个结构体变量。,例如:struct date/*声明一个结构体类型*/int month;int day;int year;struct student int num;char name20;char sex;int age;float score;stru
5、ct date birthday;/*birthday是struct date类型*/char addr30;student1,student2;,9.1.3 结构体变量的初始化和引用,例9.1 对结构体变量初始化.#include void main()struct student long int num;char name20;char sex;char addr20;a=10101,LiLin,M,123 Beijing Road;/*对结构体变量a赋初值*/printf(No.:%ldnname:%snsex:%cnaddress:%sn,a.num,a.name,a.sex,a.a
6、ddr);,结构体变量的引用,引用结构体变量中成员的方式为结构体变量名.成员名例如,student1.num表示student1变量中的num成员,即student1的num(学号)项。可以对变量的成员赋值,例如:student1.num=10010;“.”是成员(分量)运算符,它在所有的运算符中优先级最高,因此可以把student1.num作为一个整体来看待。上面赋值语句的作用是将整数10010赋给student1变量中的成员num。,几点说明:,(1)不能将一个结构体变量作为一个整体进行输入和输出。例如:已定义student1和student2为结构体变量并且它们已有值。printf(%d
7、,%s,%c,%d,%f,%n,student1);scanf(%d,s,c,d,f,s,student1);,(2)如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取以及运算。例如:对上面定义的结构体变量student1,可以这样访问各成员:student1.num,注意:不能用student1.birthday来访问student1变量中的成员birthday,因为birthday本身是一个结构体变量。,几点说明:,(3)对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。例如:studen
8、t2.score=student1.score;sum=student1.score+student2.score;student1.age+;+student2.age;,(4)可以引用结构体变量成员的地址,也可以引用结构体变量的地址。例如:scanf(%d,(输入student1.num的值)printf(%o,student1);(输出student1的首地址)结构体变量的地址主要用作函数参数,传递结构体变量的地址。,几点说明:,5.C99标准允许对某一成员初始化,如:struct Student b=.name=“Zhang Fang”;其它未被初始化的数值型成员置0,字符型成员置0,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言程序设计 用户 自定义 数据类型

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