欢迎来到天天文库
浏览记录
ID:58911765
大小:459.50 KB
页数:84页
时间:2020-09-29
《第0章结构体共用体与枚举类型ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计湖南工学院第8章结构体、共用体与枚举类型8.1概述8.2结构体定义8.3结构体变量的使用8.4结构体数组8.5结构体与指针*8.6结构体与函数*8.7共用体*8.8枚举类型8.9用户定义类型本章小结8.1概述在学习本章之前,我们已经讨论过的数据类型有简单类型(整型、实型、字符型)、数组类型和指针类型。简单变量是一个单个的变量,变量与变量之间无固定内在的联系,分别表示独立的数据,无从属关系。数组则表示是同一类型数据的集合,并用下标把数组的各个元素有序地联系起来。指针类型主要是用于动态存储分配,它们适合于各自不同的用途。但这些数
2、据类型有时还难以处理一些较为复杂的数据结构,例如:在数据处理领域中,常常要求把一些不同类型的数据作为一个整体来处理。上面提到的在《中国计算机软件专业技术资格和水平考试》中,用来描述每一个考生的信息,由准考证号(长整型)、姓名(字符型数组)、性别(字符型)、年龄(整型)、报考级别(字符数组)和成绩(实型)组成。它们的处理对象均为参加软考的应试人员,但又都分别属于不同的类型。这时如果使用简单的变量来表述,则难以反映出它们之间的内在联系,用数组则无法容纳不同类型的元素。因此,如同其它高级语言(如PASCAL,COBOL等)一样,C语言提供了一种
3、称之为结构体的类型(Structure),来描述这种由不同类型数据组成的“复杂类型”。如图8-l所示。准考证号姓名性别年龄报考级别成绩(长整型)(字符数组)(字符)(整型)(字符数组)(实型)图8-1结构体类型数据项的描述上图表示的结构体,可用下列程序语句来描述,稍后我们会进行详细的解释。structexaminees{longnum;charname[20];charsex;intage;chargrade[2];floatscore;}8.2结构体定义8.2.1结构体类型的定义定义一个结构体类型的一般形式为:Struct结构体类型名{
4、数据类型成员名1;数据类型成员名2;……数据类型成员n;};结构体类型和基本数据类型的主要区别如下:(1)结构体类型定义中的每一个成员项,表示该结构体的分量或称“域”,它们并不是变量。例如,上面定义的num,name,sex,age等均为结构体类型structexaminees的成员,而不能称为变量名。因此,在一个函数中,允许另外定义与结构体类型成员相同名的变量,它们各自代表不同的对象。例如:structexaminees{intage;chargrade[2];floatscore;/*定义age、grade、score为结构体类型成员
5、*/};intage;chargrade[2];floatscore;/*定义age、grade、score为变量*/(2)基本数据类型(如int,char,float等)是一个具体的数据类型,一旦定义后其说明的变量就分配了固定字节的内存空间,按指定的形式存放。例如,一个整型变量占2个字节并按定点形式存放。而“结构体类型”只是一个抽象的数据类型,它只表示了“由若干不同类型数据项组成的复合类型”,它由哪些成员项组成,占多少字节等信息。(3)与基本数据类型不同,系统没有预先定义结构体类型,凡需使用结构体类型数据的,都必须在程序中先行加以定义。
6、定义了一个结构体类型后,系统并没有为所定义的各成员项分配相应的存储空间,这是因为定义类型而不是定义变量。定义一个类型只是说明该类型的结构,即告诉系统它由哪些类型的成员构成,各占多少字节、按什么形式存储,并把它们当成一个整体来处理。应当明确,只有在定义了变量以后,系统才为所定义的变量分配相应的存储空间。例:定义一个反映学生基本情况的结构类型,用以存储学生的相关信息Structdate{intyear;intmonth;intday;}Structdate{intyear,month,day;};Structstudent_info{char
7、no[7];charname[9];charsex[3];strudatebirthday;}8.2.2结构体变量定义定义一个结构体变量,可以采用以下三种不同的方法:1.先进行结构体类型的定义,然后再进行结构体变量的定义例如,上面已定义了一个结构体类型structexaminees后,现在就可以用它来定义相应类型的变量了。例如:structexamineesstud1,stud2;其中structexaminees称为结构体类型名,stud1,stud2称为结构体变量名。也称变量stud1,stud2具有structexaminees类型
8、的结构。如图8-2所示:应当说明:(1)一旦进行了上述结构体变量的定义后,变量stud1和stud2就与C语言中的其它变量一样,系统将根据组成该变量各成员的不同类型,分配相应的存储空间。(2)
此文档下载收益归作者所有