文档介绍:,但有些数据类型可能由性质不同的成员组成,这些成员相互关联组成一个整体数据。例如,一个职工的工作证号(number)、姓名(name)、性别(sex)、年龄(age)、部门(department)、工资(wage)等,这些成员都属于某个职工的数据项,如果分别定义成相互独立的变量,则不能体现它们之间的内在联系,而在程序中应该把它们视为同一个数据类型的成员。第4章构造型数据类型之结构体第4章构造型数据类型之结构体利用C语言的结构体类型就可完成这一功能。例如:structstaff{char number[8];char name[10];charsex;int age;char dep[20];float wage[2];};number数组name数组sex成员age成员dep成员wage成员structstaff这样定义的结构体所需的空间是每个成员所需空间之和。这个structstaff共需要47个字节第4章构造型数据类型之结构体以上定义了一个结构体类型struct staff,它包含了number、name、sex、age、dep、wage等不同类型的数据项。这样就可在程序中使用struct staff类型的变量,把一个职工的相关信息合在一起,组成一个整体来处理。此时,就可以用structstaff这个类型定义出变量。第4章构造型数据类型之结构体例如下面程序段:struct staff worker;/*定义一个structstaff类型的变量worker*/=’M’;/*给worker变量的sex成员赋值’M’*/strcpy(,”李大磊”);/*给worker变量的name成员赋值”李大磊”*/printf(“姓名:%s性别:%c\n”,,);/*输出worker变量的数据*/第4章构造型数据类型{类型名1结构体成员名表1;类型名2结构体成员名表2;……类型名n结构体成员名表n;};第4章构造型数据类型之结构体说明:(1)结构体类型名和结构体变量名由用户命名,命名规则与标识符命名规则相同(即与变量命名规则相同)。(2)每个“结构体成员名表”都可以含有多个相同类型的成员名,它们之间以逗号隔开。结构体成员的命名规则与变量名的命名规则相同。结构体成员名允许与该结构体外的变量重名,不同结构体中的成员也可以同名,它们代表不同的对象,互不干扰。(3)结构体成员的类型可以是基本类型、数组、共用体、指针、空类型或已说明过的结构体类型等。(4)其中struct是C语言的关键字,是结构体类型的引导字,用于说明结构体类型以及定义结构体变量。第4章构造型数据类型之结构体(5)结构体说明的花括号后要以分号“;”结尾。例如一本书有书号、书名、作者、价格、简介等数据项,可以定义书的结构体类型如下:structbook_type{intnum;charname[60];charwriter[30];floatprice;charbrief[300];};这个分号不能少第4章构造型数据类型之结构体结构体成员也可以是一个结构体变量,即结构体允许嵌套结构。例如:下面语句定义了一个有嵌套结构的结构体。structdate{unsignedcharmonth;unsignedcharday;unsignedyear;};structstaff{charnumber[8];charname[10];structdatebirthday;intage;chardep[20];floatwage[2];};结构体类型说明只是说明了一个构造型数据类型,系统没有分配任何存储空间。必须定义相应结构体类型的变量,系统才为该变量分配存储空间。类型与变量是不同的概念。第4章构造型数据类型(1)紧跟在类型说明之后定义变量、数组例如:structbook_type{intnum;charname[60];charwriter[30];floatprice;charbrief[300];}bookl,books[3];此处:在说明结构体类型structbook_type的同时,定义了一个结构体变量bookl与一个结构体数组books,数组books有三个元素:books[0]、books[1]、books[2]。这种定义变量的一般形式为:struct 结构体名{结构体成员表}变量名表;第4章构造型数据类型之结构体(2)先说明结构体类型,再单独进行变量、数组定义例如:struct staff{char