C语言程序设计 教学课件 ppt 作者 金升灿 第八章 结构体和共用体

上传人:E**** 文档编号:89188084 上传时间:2019-05-20 格式:PPT 页数:42 大小:297KB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者 金升灿 第八章 结构体和共用体_第1页
第1页 / 共42页
C语言程序设计 教学课件 ppt 作者 金升灿 第八章 结构体和共用体_第2页
第2页 / 共42页
C语言程序设计 教学课件 ppt 作者 金升灿 第八章 结构体和共用体_第3页
第3页 / 共42页
C语言程序设计 教学课件 ppt 作者 金升灿 第八章 结构体和共用体_第4页
第4页 / 共42页
C语言程序设计 教学课件 ppt 作者 金升灿 第八章 结构体和共用体_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 金升灿 第八章 结构体和共用体》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 金升灿 第八章 结构体和共用体(42页珍藏版)》请在金锄头文库上搜索。

1、第八章 结构体和共用体,1)熟悉结构体类型的概念和定义; 2)掌握结构体变量、数组、指针的定义、初始化和赋值操作; 3)熟练掌握结构体的各种使用方法; 4)熟悉共用体类型概念和定义; 5)了解共用体变量定义及使用方法。,1,8.1 结构体,在实际生活中,有着大量由不同性质的数据构成的实体。例如,表8-1中的通讯录。 在表中包括有姓名、学号、电话等多种信息。在每条记录中,既有字符串数据(姓名、e-mail),又有整型数据(学号、电话号码)。对于像通讯录这样的实体,难于用基本数据类型或数组描述。因此,语言提供了一种新的称为“结构体”的构造类型数据。结构体是一组相关的不同类型的数据的集合。结构体类型

2、为处理复杂的数据提供了便利的手段。,2,8.1.1 结构体类型的定义,表8-1中的登记表用C提供的结构体类型描述如下: struct addrbook char name10; int id; char phone20; char email30; ,结构体类型的定义格式: struct 结构体名 数据类型 成员名1; 数据类型 成员名2; 数据类型 成员名n; ;,3,8.1.1 结构体类型的定义,例如: struct addr char name20; /* 姓名 */ char street40; /* 街道 */ char city20; /* 城市 */ unsigned int z

3、ip; /* 邮编 */ 1)第一个单词为关键字struct,它表明该类型是一种结构体类型;第二个单词是结构体名,如addrbook、addr,由程序设计者按标识符命名规则命名。 2)结构体有若干数据成员,每个成员有自己的数据类型。数据类型可以是基本数据类型或其它的已经定义过的构造类型(如:结构体类型)。成员名要遵循标识符命名规则。 3)结构体属于自定义类型,系统没有预先声明,凡需使用结构体类型数据的,都必须在程序中自己定义。,4,1结构体类型变量的定义,定义一个结构体类型后,可以定义该结构体类型的变量。定义变量的方法有三种: 1)先定义结构体类型,再定义结构体类型变量: struct add

4、rbook char name10; int id; char phone20; char email30; ; struct addrbook student1, student2; /* 定义结构体类型变量 */,5,1结构体类型变量的定义,2)定义结构体类型同时定义结构体类型变量: struct addrbook char name10; int id; char phone20; char email30; student1, student2; /*定义结构体类型同时定义结构体类型变量*/ 这种方式,定义结构体类型,同时定义了变量。使用这种方式定义变量后,根据需要还可以定义该结构体类

5、型的其它变量。例如, struct addrbook student3;,6,1结构体类型变量的定义,3) 直接定义结构体类型变量: struct char name10; int id; char phone20; char email30; student1,student2; /*定义该结构体类型变量*/ 使用该方法由于无法记录该结构体类型,所以除直接定义变量外,不能再定义该结构体类型变量。 说明:在前面的结构体定义中,所有的成员都是基本数据类型或数组类型。结构体成员也可以其它的结构体的变量,即构成了结构体的嵌套。,7,1结构体类型变量的定义,例如: struct date int mo

6、nth; int day int year; ; struct person char name20; char sex; struct date birthday; person1,person2; 这里首先定义结构体date,由month(月)、day(日)、year(年)三个成员组成。然后定义了一个结构体person,其中person结构体中的成员birthday 被说明为data结构体类型。,8,2结构体类型变量的初始化,结构体类型变量具有不同数据类型的成员,因此结构体类型变量的初始化较复杂。 例如: struct addr char name10; int id; char phon

7、e20; char email30; ; struct addr student=“陈光“,8, “15562342510“,““;,3结构体类型变量成员的引用,结构体变量成员的引用格式为: 结构体类型变量名.成员名 例如,结构体类型及变量的定义如下: struct addrbook char name10; int id; char phone20; char email30; student1, student2; 则变量student1, student2成员的引用形式为:student1.name、student1.id、student1.phone、student1.email及st

8、udent2.name、student2.id、student2.phone、student2.email,10,3结构体类型变量成员的引用,如果成员本身又是一个结构则必须逐级找到最低级的成员才能使用。 例如:person1.birthday.month 说明: 1)引用结构体类型变量的成员可以进行各种操作,与普通变量的使用方法相同。 2)成员运算符的运算级别最高,其结合性为自左向右。例如: student1.id+1 相当于 (student1.id)+1,11,4结构体类型变量的赋值,【例8-1】结构体类型变量赋值举例。 #include main() struct addrbook ch

9、ar name10; int id; char phone20; char email30; student1; struct addrbook student2; strcpy(student1.name,“liping“); student1.id=18; strcpy(student1.phone,“18912543612“);,printf(“input email:n“); scanf(“%s“,student1.email); student2=student1; printf(“student1:%s,%d,%s,%sn“, student1.name, student1.id,

10、student1.phone,student1.email); printf(“student2:%s,%d,%s,%sn“, student2.name, student2.id,student2.phone,student2.email); ,12,4结构体类型变量的赋值,程序运行结果: input email: student1:liping,18,18912543612, student2:liping,18,18912543612, 说明: 1)变量成员是字符型数组的要用strcpy()函数进行赋值,不能直接用赋值运算符。 2)结构体类型变量成员的输入和输出,必须逐个成员操作,不允许

11、将结构体类型变量整体输入和输出。,13,8.1.3 结构体类型数组,在实际应用中,结构体数据类型一般是以结构体类型数组的形式出现。定义结构体类型数组方法与定义结构体类型变量类似,只需说明是数组。例如: struct addrbook char name10; int id; char phone20; char email30; struct addrbook student10; 结构体类型数组元素各成员的引用形式为: 结构体类型数组名下标表达式.成员 例如:student0.name、student0.id、student0.phone、student0.email; ; student9

12、.name、student9.id、student9.phone、student9.email;,14,8.1.3 结构体类型数组,【例8-2】定义两个结构体类型数组,其中一个数组初始化;另一个数组从键盘输入。并输出两个结构体数组的所有内容。 #include #include main() int i,j; char str10; struct addrbook char name10; int id; char phone20; char email30; student14= “陈光“,8,“15562342510“,““, “宇文“,23,“13385231645“,““, “李斯“,

13、35,“13877526321“,““, “张杨“,43,“15856238546“,““; struct addrbook student22;,15,8.1.3 结构体类型数组,for (j=0;j2;j+) printf (“n输入student2%d:n“,j); gets(student2j.name); student2j.id=atoi(gets(str); gets(student2j.phone); gets(student2j.email); printf (“n数组student1的值:n“); printf (“nno. name idtphonettemailn“);

14、 for(i=0;i4;i+) printf (“%d %-4s %d %-s %-sn“,i,student1i.name, student1i.id,student1i.phone,student1i.email); printf (“n数组student2的值:n“); printf (“nno. name idtphonettemailn“); for(j=0;j2;j+) printf (“%d %-4s %d %-s %-sn“,j,student2j.name, student2j.id,student2j.phone,student2j.email); ,16,8.1.3 结构体类型数组,程序运行结果: 输入student20: zhang 12 15875124563 输入student21: wang 51 13659481245 ,数组student1的值: no. name id phone email 0 陈光 8 15562342510 1 宇文 23 13385231645 2 李斯 35 13877526321 3 张杨 43 15856238546 数组student2的值: no. name id phone email 0 zhang 12 15875124563 1 wang 51 13659481245 ,17,说明:结构

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号