《C语言程序设计》(第二版)电子教案 第7章 结构体与共用体

上传人:E**** 文档编号:89186134 上传时间:2019-05-20 格式:PPT 页数:94 大小:863.50KB
返回 下载 相关 举报
《C语言程序设计》(第二版)电子教案 第7章 结构体与共用体_第1页
第1页 / 共94页
《C语言程序设计》(第二版)电子教案 第7章 结构体与共用体_第2页
第2页 / 共94页
《C语言程序设计》(第二版)电子教案 第7章 结构体与共用体_第3页
第3页 / 共94页
《C语言程序设计》(第二版)电子教案 第7章 结构体与共用体_第4页
第4页 / 共94页
《C语言程序设计》(第二版)电子教案 第7章 结构体与共用体_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《《C语言程序设计》(第二版)电子教案 第7章 结构体与共用体》由会员分享,可在线阅读,更多相关《《C语言程序设计》(第二版)电子教案 第7章 结构体与共用体(94页珍藏版)》请在金锄头文库上搜索。

1、1,第七章 结构体与共用体,C 语言程序设计,2019/5/20,2,7.1 结构体类型的概述及定义 7.2 结构体类型变量 7.3 结构体数组 7.4 指向结构体类型数据的指针 7.5 动态存储分配 7.6 链表 7.7 共用体 7.8 枚举类型 7.9 用typedef定义类型,本章主要内容,2019/5/20,3,一个公司员工的信息包括工号、姓名、性别、年龄、工资等 特点:(1)各种信息数据类型不同 (2)属于同一个员工,逻辑上有联系 如何描述这些类型不同的相关数据?,利用结构体能够将不同类型的数据组合在一起,来描述 上述具有不同属性的对象,从而解决实际问题。,7.1 结构体类型的概述及

2、定义,现实中存在的大部分对象具有不同的属性,需要用不同的数据类型去描述,2019/5/20,4,struct 结构体名 数据类型 成员名1; 数据类型 成员名2; 数据类型 成员名n; ;,struct为关键字; 结构体名是用户定义的标识符,要符合C语言的标识符命名规则; 中是组成该结构体的成员。 各成员的数据类型可以是基本数据类型,也可以是构造类型,7.1 结构体类型的概述及定义,使用结构体,首先要对结构体类型进行定义。定义结构体类型的一般形式为:,2019/5/20,5,例如: struct employee int num; char name20; char sex; int age;

3、 float salary; ;,7.1 结构体类型的概述及定义,结构体名,五个成员,分别对应员工的工号,姓名,性别,年龄,工资,2019/5/20,6,说明: 1)结构体类型的定义是程序的语句,因此一定注意右花括号后面的分号不能丢。 2)结构体中的成员可以是不同的数据类型,它们不是变量,因此成员名可以与程序中其他变量同名;不同结构体中的成员也可以同名。 3)定义了一个结构体类型,只是定义了一种和int,float地位一样的数据类型,而不是变量的定义。,7.1 结构体类型的概述及定义,2019/5/20,7,定义好一个结构体类型后,可以将其看作是与int、 char和float等数据类型一样的

4、一个新的数据类型, 其中并无具体数据,系统对之也没有分配实际内存单 元。 为了能在程序中使用结构体类型的数据,应当定义结 构体类型的变量,并在其中存放具体的数据。,7.2 结构体类型变量,2019/5/20,8,7.2.1 结构体类型变量的定义 7.2.2 结构体类型变量的引用 7.2.3 结构体类型变量的初始化 7.2.4 结构体类型变量应用举例,7.2 结构体类型变量,2019/5/20,9,7.2.1 结构体类型变量的定义,1.先声明结构体类型,再定义结构体类型变量。,struct employee int num; char name20; char sex; int age; flo

5、at salary; ;,struct employee a1,a2; 结构体类型变量的定义形式: struct 结构体名 结构体变量名表列;,结构体名,变量名表列,2019/5/20,10,在定义了结构体变量之后,系统会为之分配内存单元。 结构体变量的每个成员在计算机中占有不同且连续的内存单元。 每个结构体变量所占内存大小为各个成员项所占内存大小之和。,7.2.1 结构体类型变量的定义,struct employee int num; char name20; char sex; int age; float salary; ;,a1和a2在内存中各占29个字节(2+20+1+2+4=29)

6、,2019/5/20,11,2.声明结构体类型的同时定义结构体变量 struct 结构体名 数据类型 成员名1; 数据类型 成员名2; 数据类型 成员名n; 结构体变量名表列;,struct employee int num; char name20; char sex; int age; float salary a1,a2;,7.2.1 结构体类型变量的定义,2019/5/20,12,3.直接定义结构体类型变量 struct 数据类型 成员名1; 数据类型 成员名2; 数据类型 成员名n; 结构体变量名表列;,struct int num; char name20; char sex; i

7、nt age; float salary a1,a2;,7.2.1 结构体类型变量的定义,2019/5/20,13,struct date int month; int day; int year; struct employee int num; char name20; char sex; struct date birthday; float salary; a1,a2;,7.2.1 结构体类型变量的定义,结构体的成员也可以定义成另一个结构体类型的变量,2019/5/20,14,说明: 类型与变量是不同的概念。 应先定义一个结构体类型,而后再定义结构体变量。 系统对类型不分配空间,仅对变

8、量分配空间。 对结构体变量可以进行赋值、存取或运算,对结构体类型不行。,7.2.1 结构体类型变量的定义,2019/5/20,15,定义了结构体类型的变量,可以对结构体变量进行各 种操作。 对结构体变量进行操作一般是对结构体成员进行操作。 1结构体变量成员的引用 结构体变量成员的引用形式:结构体变量名.成员名 例如:a1.salary=1500; 给a1变量中的salary成员赋值 为1500,7.2.2 结构体类型变量的引用,“.”是成员运算符,它在所有的运算符中的优先级是最高的,2019/5/20,16,【例7-1】结构体类型变量的引用示例。 #include void main() st

9、ruct employee int num; char name20; char sex; int age; float salary; struct employee a1; a1.num=10001; strcpy(a1.name, “wangyan“); a1.sex=F; a1.age=23; a1.salary=1500; printf(“%d,%s,%c,%d,%.1f“,a1.num,a1.name,a1.sex,a1.age,a1.salary);,7.2.2 结构体类型变量的引用,程序运行结果: 10001,wangyan,F,23,1500.0,说明:不能把结构体变量作为整

10、体进行输入/输出,下面的引用方式是错误的:printf(“%d,%s,%c,%d,%f“,a1);,2019/5/20,17,2结构体嵌套时逐级引用 如果结构体的成员又是结构体类型,这时就需要用若 干成员运算符,一级一级地找到最低一级的成员。只 能对最低的成员进行各种操作。: a1.num a1.birthday.day 变量a1的birthday成员的 day成员,7.2.2 结构体类型变量的引用,struct date int month; int day; int year; struct employee int num; char name20; char sex; struct d

11、ate birthday; float salary; a1,a2;,2019/5/20,18,3同类型结构体变量间的整体赋值 可以将一个结构体变量作为一个整体,赋给另一个类型 相同的结构体变量。 例如:将a1,a2定义成同一结构体类型的变量,若变量 a1的各个成员已经赋值,则可执行如下语句: a2=a1; 4对结构体变量的成员可以像普通变量一样进行各种运 算。例如:a1.salary= a1.salary+100; a1.age+;,7.2.2 结构体类型变量的引用,2019/5/20,19,【例7-2】结构体类型变量的初始化应用。 #include void main() struct e

12、mployee /*定义结构体类型employee*/ int num; char name20; char sex; int age; float salary; a1=10001,“liming“,f,20,1800; printf(“%d,%s,%c,%d,%.2f“,a1.num,a1.name,a1.sex,a1. age,a1.salary);,7.2.4 结构体类型变量应用举例,程序运行结果: 10001,liming,f,20,1800.00,2019/5/20,20,【例7-3】输入一个学生的英语期中和期末成绩,计算并输出其平均成绩。 main() struct study

13、float mid; float end; float average; english; scanf(“%f,%f“, ,7.2.4 结构体类型变量应用举例,程序运行情况如下: 90.5,80.5 average=85.5,2019/5/20,21,【例7-4】建立两个学生的基本情况表,然后将其输出。 #include #include main() struct stud int num; char name20; char sex; int age; float score; student1=10001, “liu“, F,18,75.0,student2; student2=stud

14、ent1; student2.num=10002; strcpy(student2.name, “zhang“);,7.2.4 结构体类型变量应用举例,2019/5/20,22,printf(“student1:%d,%s,%c,%d,%.1fn“,student1.num,student1.name,student1.sex,student1.age,student1.score); printf(“student2:%d,%s,%c,%d,%.1f“,student2.num,student2.name,student2.sex,student2.age,student2.score);

15、,程序运行结果: student1:10001,liu,F,18,75.0 student2:10002,zhang,F,18,75.0,7.2.4 结构体类型变量应用举例,2019/5/20,23,一个结构体变量可以存放关于同一个对象的一组相关数据(如一个员工的工号、姓名、性别、年龄、工资等数据)。 如果有多个对象的数据需要处理,就应该用数组,这就是结构体数组。 结构体数组中的每个数组元素都是同一个结构体类型的数据,它们都分别包括各个成员项。,7.3 结构体数组,2019/5/20,24,7.3.1 结构体数组的定义 7.3.2 结构体数组的初始化 7.3.3 结构体数组应用举例,7.3 结构体数组,2019/5/20,25,结构体数组的定义方式同结构体变量的定义方式一样,也有3种形式,只需把结构体变量定义成数组即可。,7.3.1 结构体数组的定义,struct employee int num; char name20; char sex; int age; float salary; ; struct employee a4;,struct employee int num; char name20; char sex; int age; float salary; a4

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

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

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