第9章结构体、共用体和枚举类型.ppt

上传人:可****阿 文档编号:69828132 上传时间:2023-01-09 格式:PPT 页数:60 大小:1.07MB
返回 下载 相关 举报
第9章结构体、共用体和枚举类型.ppt_第1页
第1页 / 共60页
第9章结构体、共用体和枚举类型.ppt_第2页
第2页 / 共60页
点击查看更多>>
资源描述

《第9章结构体、共用体和枚举类型.ppt》由会员分享,可在线阅读,更多相关《第9章结构体、共用体和枚举类型.ppt(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C语言程序设计主编:连卫民 何 樱第9章 结构体、共用体和枚举类型本章主要内容:本章主要内容:本章主要内容:本章主要内容:9.1 9.1 结构体结构体结构体结构体(重点(重点(重点(重点)9.2 9.2 链表(重点)链表(重点)链表(重点)链表(重点)9.3 9.3 共用共用共用共用体体体体9.4 9.4 枚举枚举枚举枚举类型类型类型类型(重点(重点(重点(重点)9.5 9.5 类型定义符类型定义符类型定义符类型定义符typedeftypedef本章教学要求:本章教学要求:本章教学要求:本章教学要求:1.1.掌握掌握掌握掌握结构体类型的定义及应用结构体类型的定义及应用结构体类型的定义及应用结构

2、体类型的定义及应用2.2.熟悉熟悉熟悉熟悉链表的定义及使用方法链表的定义及使用方法链表的定义及使用方法链表的定义及使用方法 3.3.掌握掌握掌握掌握枚举类型定义及在实际问题中的应用枚举类型定义及在实际问题中的应用枚举类型定义及在实际问题中的应用枚举类型定义及在实际问题中的应用4.4.了解了解了解了解共用体及类型定义符的使用共用体及类型定义符的使用共用体及类型定义符的使用共用体及类型定义符的使用 9.1 结构体结构体 本节主要介绍结构体类型的定义、结构体变量的定义本节主要介绍结构体类型的定义、结构体变量的定义本节主要介绍结构体类型的定义、结构体变量的定义本节主要介绍结构体类型的定义、结构体变量的

3、定义与使用、结构体数组的定义与使用、结构体指针的定义与使用、结构体数组的定义与使用、结构体指针的定义与使用、结构体数组的定义与使用、结构体指针的定义与使用、结构体数组的定义与使用、结构体指针的定义与使用。与使用。与使用。与使用。9.1.1 9.1.1 结构体类型的定义结构体类型的定义结构体类型的定义结构体类型的定义1.1.定义格式如下:定义格式如下:定义格式如下:定义格式如下:structstruct结构体名结构体名结构体名结构体名 成员项列表成员项列表成员项列表成员项列表;第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.1 9.1.1 结构体类型的定义结构体类型的定义结构体类型的

4、定义结构体类型的定义2.2.例如,可以这样定义与学生基本信息对应的结构体类型:例如,可以这样定义与学生基本信息对应的结构体类型:例如,可以这样定义与学生基本信息对应的结构体类型:例如,可以这样定义与学生基本信息对应的结构体类型:structstruct student student char char numnum11;11;/*/*学号学号学号学号*/char name10;char name10;/*/*姓名姓名姓名姓名*/char sex;char sex;/*/*性别性别性别性别*/intint age;age;/*/*年龄年龄年龄年龄*/char nation;char natio

5、n;/*/*民族民族民族民族*/char char addraddr20;20;/*/*家庭住址家庭住址家庭住址家庭住址*/;第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.1 9.1.1 结构体类型的定义结构体类型的定义结构体类型的定义结构体类型的定义3.3.注意注意注意注意 不要忘记写花括弧外的分号。不要忘记写花括弧外的分号。不要忘记写花括弧外的分号。不要忘记写花括弧外的分号。一个结构体类型有其专用的标志,一个结构体类型有其专用的标志,一个结构体类型有其专用的标志,一个结构体类型有其专用的标志,它由两个标识符组成,它由两个标识符组成,它由两个标识符组成,它由两个标识符组成,其中

6、其中其中其中第一个标识符为关键字第一个标识符为关键字第一个标识符为关键字第一个标识符为关键字structstruct,第二个标识符,第二个标识符,第二个标识符,第二个标识符studentstudent为结构体名,为结构体名,为结构体名,为结构体名,由编程人员按照标识符的命名规则来指定。这两者联合起来组成一由编程人员按照标识符的命名规则来指定。这两者联合起来组成一由编程人员按照标识符的命名规则来指定。这两者联合起来组成一由编程人员按照标识符的命名规则来指定。这两者联合起来组成一个个个个“类型标识符类型标识符类型标识符类型标识符”即即即即“类型名类型名类型名类型名”。一个结构体类型是由若干个数据项

7、组成,一个结构体类型是由若干个数据项组成,一个结构体类型是由若干个数据项组成,一个结构体类型是由若干个数据项组成,每一个数据项都必须每一个数据项都必须每一个数据项都必须每一个数据项都必须属于一种已定义的类型,属于一种已定义的类型,属于一种已定义的类型,属于一种已定义的类型,且各个数据项的类型可以不相同。每一个且各个数据项的类型可以不相同。每一个且各个数据项的类型可以不相同。每一个且各个数据项的类型可以不相同。每一个数据项称为一个结构体的成员,也称为数据项称为一个结构体的成员,也称为数据项称为一个结构体的成员,也称为数据项称为一个结构体的成员,也称为“域域域域”。比如在上面的定义。比如在上面的定

8、义。比如在上面的定义。比如在上面的定义中,中,中,中,namename、sexsex、ageage等不是变量名而是结构体类型等不是变量名而是结构体类型等不是变量名而是结构体类型等不是变量名而是结构体类型structstruct studentstudent的成员名。在一个函数中,可以另外定义与结构体成员同的成员名。在一个函数中,可以另外定义与结构体成员同的成员名。在一个函数中,可以另外定义与结构体成员同的成员名。在一个函数中,可以另外定义与结构体成员同名的变量名,它们代表不同的对象。名的变量名,它们代表不同的对象。名的变量名,它们代表不同的对象。名的变量名,它们代表不同的对象。第9章 结构体、

9、共用体和枚举类型9.1 结构体结构体9.1.1 9.1.1 结构体类型的定义结构体类型的定义结构体类型的定义结构体类型的定义3.3.注意注意注意注意 结构体类型可以有无数种。结构体类型可以有无数种。结构体类型可以有无数种。结构体类型可以有无数种。因为结构体名可由程序设计人员自因为结构体名可由程序设计人员自因为结构体名可由程序设计人员自因为结构体名可由程序设计人员自定,且结构体成员可千变万化,所以结构体类型不是只有一种,而定,且结构体成员可千变万化,所以结构体类型不是只有一种,而定,且结构体成员可千变万化,所以结构体类型不是只有一种,而定,且结构体成员可千变万化,所以结构体类型不是只有一种,而可

10、以有千千万万种,这一点也是与基本类型不同的。可以有千千万万种,这一点也是与基本类型不同的。可以有千千万万种,这一点也是与基本类型不同的。可以有千千万万种,这一点也是与基本类型不同的。定义一个结构体类型并不意味着系统将分配一段内存单元来存定义一个结构体类型并不意味着系统将分配一段内存单元来存定义一个结构体类型并不意味着系统将分配一段内存单元来存定义一个结构体类型并不意味着系统将分配一段内存单元来存放各数据项成员。放各数据项成员。放各数据项成员。放各数据项成员。因为这只是定义类型而不是定义变量,只有在定因为这只是定义类型而不是定义变量,只有在定因为这只是定义类型而不是定义变量,只有在定因为这只是定

11、义类型而不是定义变量,只有在定义变量以后,计算机才会依据结构体成员的数据类型,在内存中取义变量以后,计算机才会依据结构体成员的数据类型,在内存中取义变量以后,计算机才会依据结构体成员的数据类型,在内存中取义变量以后,计算机才会依据结构体成员的数据类型,在内存中取得一块连续的存储空间来存放这些成员。得一块连续的存储空间来存放这些成员。得一块连续的存储空间来存放这些成员。得一块连续的存储空间来存放这些成员。第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.2 9.1.2 结构体变量的定义与使用结构体变量的定义与使用结构体变量的定义与使用结构体变量的定义与使用1.1.结构体变量的定义结构体

12、变量的定义结构体变量的定义结构体变量的定义 结结结结构构构构体体体体在在在在使使使使用用用用时时时时,需需需需要要要要先先先先定定定定义义义义结结结结构构构构体体体体类类类类型型型型,然然然然后后后后再再再再根根根根据据据据自自自自定定定定义的结构体类型去定义结构体变量。义的结构体类型去定义结构体变量。义的结构体类型去定义结构体变量。义的结构体类型去定义结构体变量。可以用以下三种方法定义一个结构体变量。可以用以下三种方法定义一个结构体变量。可以用以下三种方法定义一个结构体变量。可以用以下三种方法定义一个结构体变量。(1 1)先定义结构体类型再定义该类型的变量。如上面已经)先定义结构体类型再定义

13、该类型的变量。如上面已经)先定义结构体类型再定义该类型的变量。如上面已经)先定义结构体类型再定义该类型的变量。如上面已经定义了一个结构体类型定义了一个结构体类型定义了一个结构体类型定义了一个结构体类型structstruct student student,现在可以用它定义,现在可以用它定义,现在可以用它定义,现在可以用它定义结构体变量。结构体变量。结构体变量。结构体变量。structstruct student stu1,stu2;student stu1,stu2;(2 2)定义一个结构体类型的同时定义该结构体类型的变量。)定义一个结构体类型的同时定义该结构体类型的变量。)定义一个结构体类

14、型的同时定义该结构体类型的变量。)定义一个结构体类型的同时定义该结构体类型的变量。一般格式如下:一般格式如下:一般格式如下:一般格式如下:structstruct 结构体名结构体名结构体名结构体名 结构体成员列表结构体成员列表结构体成员列表结构体成员列表;变量名列表变量名列表变量名列表变量名列表;第9章 结构体、共用体和枚举类型struct student char num11;char name10;char sex;int age;char nation;char addr20;stu1,stu2;9.1 结构体结构体9.1.2 9.1.2 结构体变量的定义与使用结构体变量的定义与使用结构

15、体变量的定义与使用结构体变量的定义与使用1.1.结构体变量的定义结构体变量的定义结构体变量的定义结构体变量的定义 可以可以可以可以用以下三种方法定义一个结构体变量。用以下三种方法定义一个结构体变量。用以下三种方法定义一个结构体变量。用以下三种方法定义一个结构体变量。(3 3)直接定义结构体类型的变量。)直接定义结构体类型的变量。)直接定义结构体类型的变量。)直接定义结构体类型的变量。一般格式一般格式一般格式一般格式如下:如下:如下:如下:structstruct 结构体成员列表结构体成员列表结构体成员列表结构体成员列表;变量名列表变量名列表变量名列表变量名列表;即不出现结构体名。即不出现结构体

16、名。即不出现结构体名。即不出现结构体名。但但但但这种形式只是定义了结构体类型的变量,没有指定此结构这种形式只是定义了结构体类型的变量,没有指定此结构这种形式只是定义了结构体类型的变量,没有指定此结构这种形式只是定义了结构体类型的变量,没有指定此结构体类型的名字,因此以后不能再用它来定义其它变量。体类型的名字,因此以后不能再用它来定义其它变量。体类型的名字,因此以后不能再用它来定义其它变量。体类型的名字,因此以后不能再用它来定义其它变量。第9章 结构体、共用体和枚举类型struct char num11;char name10;char sex;int age;char nation;char

17、addr20;stu1,stu2;9.1 结构体结构体9.1.2 9.1.2 结构体变量的定义与使用结构体变量的定义与使用结构体变量的定义与使用结构体变量的定义与使用1.1.结构体变量的定义结构体变量的定义结构体变量的定义结构体变量的定义 说明:说明:说明:说明:类型与变量是不同的概念。对结构体变量来说,在定义时一类型与变量是不同的概念。对结构体变量来说,在定义时一类型与变量是不同的概念。对结构体变量来说,在定义时一类型与变量是不同的概念。对结构体变量来说,在定义时一般先定义一个结构体类型,然后定义该类型的变量。只能对变般先定义一个结构体类型,然后定义该类型的变量。只能对变般先定义一个结构体类

18、型,然后定义该类型的变量。只能对变般先定义一个结构体类型,然后定义该类型的变量。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。量赋值、存取或运算,而不能对一个类型赋值、存取或运算。量赋值、存取或运算,而不能对一个类型赋值、存取或运算。量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时只对变量分配存储空间,对类型是不分配空间的。在编译时只对变量分配存储空间,对类型是不分配空间的。在编译时只对变量分配存储空间,对类型是不分配空间的。在编译时只对变量分配存储空间,对类型是不分配空间的。对于某个具体的结构体类型,成员的数量必须固定。对于某个具体的结构体类型,成员的数量必须固

19、定。对于某个具体的结构体类型,成员的数量必须固定。对于某个具体的结构体类型,成员的数量必须固定。对结构体中的成员可以单独使用,它的作用与地位相当于普对结构体中的成员可以单独使用,它的作用与地位相当于普对结构体中的成员可以单独使用,它的作用与地位相当于普对结构体中的成员可以单独使用,它的作用与地位相当于普通变量。通变量。通变量。通变量。结构体类型的成员也可以是一个结构体变量。结构体类型的成员也可以是一个结构体变量。结构体类型的成员也可以是一个结构体变量。结构体类型的成员也可以是一个结构体变量。第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.2 9.1.2 结构体变量的定义与使用结构体

20、变量的定义与使用结构体变量的定义与使用结构体变量的定义与使用2.2.结构体变量的初始化结构体变量的初始化结构体变量的初始化结构体变量的初始化 结结结结构构构构体体体体类类类类型型型型的的的的使使使使用用用用方方方方法法法法与与与与数数数数组组组组相相相相似似似似,它它它它的的的的初初初初始始始始化化化化需需需需要要要要以以以以每每每每个个个个成员为基本单位,可以在定义变量的同时赋初值。例如:成员为基本单位,可以在定义变量的同时赋初值。例如:成员为基本单位,可以在定义变量的同时赋初值。例如:成员为基本单位,可以在定义变量的同时赋初值。例如:structstruct student student

21、 char char numnum11;11;char name10;char name10;char sex;char sex;intint age;age;char nation;char nation;char char addraddr20;20;structstruct student stu1=20150101001,LiMing,M,30,H,student stu1=20150101001,LiMing,M,30,H,YingcaiYingcai Road;Road;第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.2 9.1.2 结构体变量的定义与使用结构体变量的定

22、义与使用结构体变量的定义与使用结构体变量的定义与使用3.3.结构体变量的引用结构体变量的引用结构体变量的引用结构体变量的引用(1 1)引用结构体变量中的单个成员。)引用结构体变量中的单个成员。)引用结构体变量中的单个成员。)引用结构体变量中的单个成员。一个结构体变量表示的是一个整体,比如一个学生的基本信息,但有时一个结构体变量表示的是一个整体,比如一个学生的基本信息,但有时一个结构体变量表示的是一个整体,比如一个学生的基本信息,但有时一个结构体变量表示的是一个整体,比如一个学生的基本信息,但有时我们要访问的是其中的一个数据项成员,比如某个学生的姓名,访问结我们要访问的是其中的一个数据项成员,比

23、如某个学生的姓名,访问结我们要访问的是其中的一个数据项成员,比如某个学生的姓名,访问结我们要访问的是其中的一个数据项成员,比如某个学生的姓名,访问结构体变量的某个数据项成员的形式为:构体变量的某个数据项成员的形式为:构体变量的某个数据项成员的形式为:构体变量的某个数据项成员的形式为:结构体变量结构体变量结构体变量结构体变量.结构体成员名结构体成员名结构体成员名结构体成员名 其中符号其中符号其中符号其中符号“.”称为成员运算符。称为成员运算符。称为成员运算符。称为成员运算符。第9章 结构体、共用体和枚举类型struct studentchar num11;char name10;char sex

24、;int age;char nation;char addr20;stu1;strcpy(stu1.name,LiMing);stu1.age=19;9.1 结构体结构体9.1.2 9.1.2 结构体变量的定义与使用结构体变量的定义与使用结构体变量的定义与使用结构体变量的定义与使用3.3.结构体变量的引用结构体变量的引用结构体变量的引用结构体变量的引用(2 2)整体引用结构体变量。)整体引用结构体变量。)整体引用结构体变量。)整体引用结构体变量。可以将一个结构体变量的值赋给另一个具有相同类型的结构可以将一个结构体变量的值赋给另一个具有相同类型的结构可以将一个结构体变量的值赋给另一个具有相同类型

25、的结构可以将一个结构体变量的值赋给另一个具有相同类型的结构体变量。体变量。体变量。体变量。例如:例如:例如:例如:structstruct student stu1=20150101001,LiMing,M,30,student stu1=20150101001,LiMing,M,30,H,H,YingcaiYingcai Road;Road;structstruct student stu2;student stu2;stu2=stu1;stu2=stu1;但是不允许用赋值语句将一组常量直接赋给一个结构体变量,但是不允许用赋值语句将一组常量直接赋给一个结构体变量,但是不允许用赋值语句将一组常

26、量直接赋给一个结构体变量,但是不允许用赋值语句将一组常量直接赋给一个结构体变量,如下面的用法是不正确的。如下面的用法是不正确的。如下面的用法是不正确的。如下面的用法是不正确的。structstruct student stu1;student stu1;stu1=20150101001,LiMing,M,30,H,stu1=20150101001,LiMing,M,30,H,YingcaiYingcai Road;Road;第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.2 9.1.2 结构体变量的定义与使用结构体变量的定义与使用结构体变量的定义与使用结构体变量的定义与使用3.3.

27、结构体变量的引用结构体变量的引用结构体变量的引用结构体变量的引用(3 3)结构体变量中成员的输入输出。)结构体变量中成员的输入输出。)结构体变量中成员的输入输出。)结构体变量中成员的输入输出。C C语言不允许把一个结构体语言不允许把一个结构体语言不允许把一个结构体语言不允许把一个结构体变量作为一个整体进行输入或输出操作。变量作为一个整体进行输入或输出操作。变量作为一个整体进行输入或输出操作。变量作为一个整体进行输入或输出操作。例如下列语句是不合法的:例如下列语句是不合法的:例如下列语句是不合法的:例如下列语句是不合法的:scanfscanf(%d,&stu1);(%d,&stu1);print

28、fprintf(%dn,stu1);(%dn,stu1);printfprintf(%s,%(%s,%s,%c,%d,%c,%ss,%c,%d,%c,%s n,stu1);n,stu1);因为在用因为在用因为在用因为在用printfprintf和和和和scanfscanf函数时,必须指定输入输出格式,一个函数时,必须指定输入输出格式,一个函数时,必须指定输入输出格式,一个函数时,必须指定输入输出格式,一个格式符对应一个变量,有明确的存储界限。而结构体变量包括若干格式符对应一个变量,有明确的存储界限。而结构体变量包括若干格式符对应一个变量,有明确的存储界限。而结构体变量包括若干格式符对应一个变量

29、,有明确的存储界限。而结构体变量包括若干个不同类型的数据项,个不同类型的数据项,个不同类型的数据项,个不同类型的数据项,所以,要输入或输出一个结构体类型变量,所以,要输入或输出一个结构体类型变量,所以,要输入或输出一个结构体类型变量,所以,要输入或输出一个结构体类型变量,只能对其成员进行操作。只能对其成员进行操作。只能对其成员进行操作。只能对其成员进行操作。第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.2 9.1.2 结构体变量的定义与使用结构体变量的定义与使用结构体变量的定义与使用结构体变量的定义与使用3.3.结构体变量的引用结构体变量的引用结构体变量的引用结构体变量的引用(4

30、 4)可以引用结构体变量其成员的地址,也可以引用结构体变量)可以引用结构体变量其成员的地址,也可以引用结构体变量)可以引用结构体变量其成员的地址,也可以引用结构体变量)可以引用结构体变量其成员的地址,也可以引用结构体变量的地址。的地址。的地址。的地址。前面已经提到,前面已经提到,前面已经提到,前面已经提到,结构体变量所占内存大小是各成员所占内存大结构体变量所占内存大小是各成员所占内存大结构体变量所占内存大小是各成员所占内存大结构体变量所占内存大小是各成员所占内存大小之和,小之和,小之和,小之和,这是因为结构体变量在内存中存储时,各个成员按其定义这是因为结构体变量在内存中存储时,各个成员按其定义

31、这是因为结构体变量在内存中存储时,各个成员按其定义这是因为结构体变量在内存中存储时,各个成员按其定义的先后顺序存储在连续的一段存储空间。的先后顺序存储在连续的一段存储空间。的先后顺序存储在连续的一段存储空间。的先后顺序存储在连续的一段存储空间。这段连续存储空间的首地这段连续存储空间的首地这段连续存储空间的首地这段连续存储空间的首地址也就是该结构体变量的地址,它的各个成员也有各自的存储地址,址也就是该结构体变量的地址,它的各个成员也有各自的存储地址,址也就是该结构体变量的地址,它的各个成员也有各自的存储地址,址也就是该结构体变量的地址,它的各个成员也有各自的存储地址,可以引用这些地址。可以引用这

32、些地址。可以引用这些地址。可以引用这些地址。scanfscanf(%d,&stu1.age);(%d,&stu1.age);/*/*输入输入输入输入stu1.age stu1.age 的值的值的值的值*/printfprintf(%o%on,&stu1,&stu1.age);(%o%on,&stu1,&stu1.age);/*/*输出输出输出输出stu1stu1和和和和stu1.agestu1.age的地址的地址的地址的地址*/第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.3 9.1.3 结构体数组的定义与使用结构体数组的定义与使用结构体数组的定义与使用结构体数组的定义与使用 一

33、个结构体变量只能存放一个对象(如一个学生)的数据,如一个结构体变量只能存放一个对象(如一个学生)的数据,如一个结构体变量只能存放一个对象(如一个学生)的数据,如一个结构体变量只能存放一个对象(如一个学生)的数据,如果要存放一所学校所有的学生数据就要用到数组,这就是结构体数果要存放一所学校所有的学生数据就要用到数组,这就是结构体数果要存放一所学校所有的学生数据就要用到数组,这就是结构体数果要存放一所学校所有的学生数据就要用到数组,这就是结构体数组。结构体数组的每个数组元素都是一个结构体类型的变量。组。结构体数组的每个数组元素都是一个结构体类型的变量。组。结构体数组的每个数组元素都是一个结构体类型

34、的变量。组。结构体数组的每个数组元素都是一个结构体类型的变量。1.1.结构体数组的定义结构体数组的定义结构体数组的定义结构体数组的定义(1 1)先定义结构体类型再定义结构体数组。例如:)先定义结构体类型再定义结构体数组。例如:)先定义结构体类型再定义结构体数组。例如:)先定义结构体类型再定义结构体数组。例如:structstruct worker worker char name20;char name20;char sex;char sex;intint age;age;float salary;float salary;structstruct worker w50;worker w50;

35、第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.3 9.1.3 结构体数组的定义与使用结构体数组的定义与使用结构体数组的定义与使用结构体数组的定义与使用1.1.结构体数组的定义结构体数组的定义结构体数组的定义结构体数组的定义(2 2)定义类型的同时定义数组。例如:)定义类型的同时定义数组。例如:)定义类型的同时定义数组。例如:)定义类型的同时定义数组。例如:structstruct worker worker char name20;char name20;char sex;char sex;intint age;age;float salary;float salary;w50;

36、w50;第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.3 9.1.3 结构体数组的定义与使用结构体数组的定义与使用结构体数组的定义与使用结构体数组的定义与使用1.1.结构体数组的定义结构体数组的定义结构体数组的定义结构体数组的定义(3 3)直接定义结构体数组。例如:)直接定义结构体数组。例如:)直接定义结构体数组。例如:)直接定义结构体数组。例如:structstruct char name20;char name20;char sex;char sex;intint age;age;float salary;float salary;w50;w50;第9章 结构体、共用体和枚举

37、类型9.1 结构体结构体9.1.3 9.1.3 结构体数组的定义与使用结构体数组的定义与使用结构体数组的定义与使用结构体数组的定义与使用2.2.结构体数组的初始化结构体数组的初始化结构体数组的初始化结构体数组的初始化结构体数组在定义时可以直接进行初始化。例如:结构体数组在定义时可以直接进行初始化。例如:结构体数组在定义时可以直接进行初始化。例如:结构体数组在定义时可以直接进行初始化。例如:structstruct worker worker char name20;char name20;char sex;char sex;intint age;age;float salary;float s

38、alary;w50=LiuGang,M,30,5500,WangKe,F,25,4000;w50=LiuGang,M,30,5500,WangKe,F,25,4000;第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.3 9.1.3 结构体数组的定义与使用结构体数组的定义与使用结构体数组的定义与使用结构体数组的定义与使用3.3.结构体数组的引用结构体数组的引用结构体数组的引用结构体数组的引用一个结构体数组的元素相当于一个结构体变量,所以前面关于结构一个结构体数组的元素相当于一个结构体变量,所以前面关于结构一个结构体数组的元素相当于一个结构体变量,所以前面关于结构一个结构体数组的元素相

39、当于一个结构体变量,所以前面关于结构体变量的使用方法对结构体数组元素同样适用。有关数组的用法同体变量的使用方法对结构体数组元素同样适用。有关数组的用法同体变量的使用方法对结构体数组元素同样适用。有关数组的用法同体变量的使用方法对结构体数组元素同样适用。有关数组的用法同一般数组。一般数组。一般数组。一般数组。例如,数组的输入可采用以下形式:例如,数组的输入可采用以下形式:例如,数组的输入可采用以下形式:例如,数组的输入可采用以下形式:for(for(i i=0;i50;i+)=0;i50;i+)scanfscanf(%(%s,%c,%d,%f,ws,%c,%d,%f,w i i.name,&wn

40、ame,&w i i.sex,&wsex,&w i i.age,&wage,&w i i.salary);.salary);数组的输出:数组的输出:数组的输出:数组的输出:for(for(i i=0;i50;i+)=0;i50;i+)printfprintf(%(%s,%c,%d,%f,ws,%c,%d,%f,w i i.name,wname,w i i.sex,wsex,w i i.age,wage,w i i.salary);.salary);第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.3 9.1.3 结构体数组的定义与使用结构体数组的定义与使用结构体数组的定义与使用结构体

41、数组的定义与使用【例例例例9-19-1】员工档案信息的输入与输出。员工档案信息的输入与输出。员工档案信息的输入与输出。员工档案信息的输入与输出。源程序:源程序:源程序:源程序:第9章 结构体、共用体和枚举类型#include#define MAX 3struct worker char name20;char sex;int age;float salary;int main()struct worker wMAX;int i;for(i=0;iMAX;i+)printf(Input name:);scanf(%s,wi.name);printf(Input sex:);scanf(%c,&w

42、i.sex);printf(Input age:);scanf(%d,&wi.age);printf(Input salary:);scanf(%f,&wi.salary);printf(name sex age salaryn);for(i=0;i-”,即:,即:,即:,即:(*p).age(*p).age也可也可也可也可以写成以写成以写成以写成p-agep-age的形式。这样,引用结构体变量成员可以有以下三种形式:的形式。这样,引用结构体变量成员可以有以下三种形式:的形式。这样,引用结构体变量成员可以有以下三种形式:的形式。这样,引用结构体变量成员可以有以下三种形式:结构体变量名结构体变量

43、名结构体变量名结构体变量名.成员名成员名成员名成员名 (*结构体指针变量名)结构体指针变量名)结构体指针变量名)结构体指针变量名).成员名成员名成员名成员名 结构体指针变量名结构体指针变量名结构体指针变量名结构体指针变量名-成员成员成员成员名名名名注意:注意:注意:注意:运算符运算符运算符运算符“-”左侧只能是结构体指针变量。左侧只能是结构体指针变量。左侧只能是结构体指针变量。左侧只能是结构体指针变量。在第二种形式中,在第二种形式中,在第二种形式中,在第二种形式中,“(*(*结构体指针变量名结构体指针变量名结构体指针变量名结构体指针变量名)”两边的括号不能省略,因为运两边的括号不能省略,因为运

44、两边的括号不能省略,因为运两边的括号不能省略,因为运算符算符算符算符.的优先级要高于指针运算符的优先级要高于指针运算符的优先级要高于指针运算符的优先级要高于指针运算符*。第9章 结构体、共用体和枚举类型9.1 结构体结构体9.1.4 9.1.4 结构体指针的定义与使用结构体指针的定义与使用结构体指针的定义与使用结构体指针的定义与使用【例【例【例【例9-29-2】输入一个学生的学号、姓名、期中考试成绩和期末考试输入一个学生的学号、姓名、期中考试成绩和期末考试成绩,计算平均成绩并输出所有信息。成绩,计算平均成绩并输出所有信息。分析:分析:分析:分析:定义一个结构体类型的变量,用来存放学生的相关信息

45、。在定义一个结构体类型的变量,用来存放学生的相关信息。在引用各成员时有三种方式。引用各成员时有三种方式。源源源源程序:程序:程序:程序:第9章 结构体、共用体和枚举类型#include struct studentchar num12,name18;int final,midterm,aver;void main()struct student*p,stu1;p=&stu1;printf(Input the num name midterm final:);scanf(%s%s%d%d,stu1.num,stu1.name,&stu1.midterm,&stu1.final);(*p).ave

46、r=(*p).final+(*p).midterm)/2;printf(num:%s name:%sn,p-num,p-name);printf(midterm score:%d final score:%d aver score:%dn,p-midterm,p-final,p-aver);程序运行结果:Input the num name midterm final:150203001 LiLin 8892num:150203001 name:LiLinmidterm score:88 final score:92 aver score:909.2 链表链表 链表是一种常见而又重要的数据结构

47、。它是一种动态存储结构,链表是一种常见而又重要的数据结构。它是一种动态存储结构,链表是一种常见而又重要的数据结构。它是一种动态存储结构,链表是一种常见而又重要的数据结构。它是一种动态存储结构,根据需要开辟内存单元,其具体的理论和用法在数据结构课程根据需要开辟内存单元,其具体的理论和用法在数据结构课程根据需要开辟内存单元,其具体的理论和用法在数据结构课程根据需要开辟内存单元,其具体的理论和用法在数据结构课程中会详细介绍。本节主要介绍利用结构体变量和指针实现链表的方中会详细介绍。本节主要介绍利用结构体变量和指针实现链表的方中会详细介绍。本节主要介绍利用结构体变量和指针实现链表的方中会详细介绍。本节

48、主要介绍利用结构体变量和指针实现链表的方法。法。法。法。所谓所谓所谓所谓链表是指将若干个数据元素按一定的原则连接起来的表。链表是指将若干个数据元素按一定的原则连接起来的表。链表是指将若干个数据元素按一定的原则连接起来的表。链表是指将若干个数据元素按一定的原则连接起来的表。链表中的每一个数据元素(可能包含多个成员项)称为一个链表中的每一个数据元素(可能包含多个成员项)称为一个链表中的每一个数据元素(可能包含多个成员项)称为一个链表中的每一个数据元素(可能包含多个成员项)称为一个“结点结点结点结点”。链表的连接原则是:链表的连接原则是:链表的连接原则是:链表的连接原则是:前一个结点前一个结点前一个

49、结点前一个结点“指向指向指向指向”下一个结点,只有通下一个结点,只有通下一个结点,只有通下一个结点,只有通过前一个结点才能找到下一个结点过前一个结点才能找到下一个结点过前一个结点才能找到下一个结点过前一个结点才能找到下一个结点。第9章 结构体、共用体和枚举类型9.2 链表链表9.2.1 9.2.1 单链表的结构单链表的结构单链表的结构单链表的结构 在单链表中,每个结点由两个域组成:在单链表中,每个结点由两个域组成:在单链表中,每个结点由两个域组成:在单链表中,每个结点由两个域组成:数据域数据域数据域数据域用于存储数据;用于存储数据;用于存储数据;用于存储数据;指针域指针域指针域指针域用于存储后

50、继结点的地址。第一个结点的地址存储在一个指用于存储后继结点的地址。第一个结点的地址存储在一个指用于存储后继结点的地址。第一个结点的地址存储在一个指用于存储后继结点的地址。第一个结点的地址存储在一个指针变量中,该指针变量称为针变量中,该指针变量称为针变量中,该指针变量称为针变量中,该指针变量称为“头指针头指针头指针头指针”(如图(如图(如图(如图9-19-1中的);最后中的);最后中的);最后中的);最后一个结点的指针域存储一个一个结点的指针域存储一个一个结点的指针域存储一个一个结点的指针域存储一个“NULLNULL”值(值(值(值(NULLNULL是头文件中定义是头文件中定义是头文件中定义是头

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

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁