
C语言程序设计 赵晓阳
赵晓阳

第10章结构体与共用体 ·10.1结构体类型和结构体变量 ·10.2结构体数组 ·103结构体指针和结构体嵌套 ·104共用体 ·10.5枚举类型 ·10.6用户自定义类型
第10章 结构体与共用体 10.1 结构体类型和结构体变量 10.2 结构体数组 10.3 结构体指针和结构体嵌套 10.4 共用体 10.5 枚举类型 10.6 用户自定义类型

10.1结构体类型和结构体变量 ·结构体类型属于构造类型,是用户在程序中根据实际需要自己定义的 一种复杂的数据类型。这种类型必须先定义,然后才能用它来定义这 种类型的变量、数组、指针和函数等。结构体类型又称结构体型,简 称结构体。 ●1o.1.1结构体型的定义 ·如前所述,结构体是由不同数据类型的数据组成的。组成结构体的每 一个数据称为该结构体的成员。在程序中使用结构体时,首先要对结 构体的组成进行描述,这称为结构体型的定义,结构体型的定义是确 定该结构体型由哪几个成员项组成,以及每个成员项具有什么数据类 型。 下一页返回
10.1 结构体类型和结构体变量 结构体类型属于构造类型,是用户在程序中根据实际需要自己定义的 一种复杂的数据类型。这种类型必须先定义,然后才能用它来定义这 种类型的变量、数组、指针和函数等。结构体类型又称结构体型,简 称结构体。 10.1.1 结构体型的定义 如前所述,结构体是由不同数据类型的数据组成的。组成结构体的每 一个数据称为该结构体的成员。在程序中使用结构体时,首先要对结 构体的组成进行描述,这称为结构体型的定义,结构体型的定义是确 定该结构体型由哪几个成员项组成,以及每个成员项具有什么数据类 型。 下一页 返回

10.1结构体类型和结构体变量 ·结构体型定义的一般形式为: ·struct结构体型名 。{数据类型成员名; 数据类型成员名2; 数据类型成员名n; 。; ·其中struct为关键字,作为结构体型定义的标识符,其后是定义结构 体型名,二者形成结构体类型标识符。结构体型名由用户命名,符合 标识符的命名规定。大括号中的每个成员由其数据类型和成员名组成。 每个成员项后以分号结束。整个结构体型的定义也以分号作结束符。 上一页下一页返回
10.1 结构体类型和结构体变量 结构体型定义的一般形式为: struct 结构体型名 { 数据类型 成员名1; 数据类型 成员名2; …… 数据类型 成员名n; }; 其中struct为关键字,作为结构体型定义的标识符,其后是定义结构 体型名,二者形成结构体类型标识符。结构体型名由用户命名,符合 标识符的命名规定。大括号中的每个成员由其数据类型和成员名组成。 每个成员项后以分号结束。整个结构体型的定义也以分号作结束符。 上一页 下一页 返回

10.1结构体类型和结构体变量 ·例101定义如下结构体型。 ●struct student ·{int num; ·char name[2o]; ·char sex; ●int age; ·float score; ·char addr[3o]; 。 上一页下一页返回
10.1 结构体类型和结构体变量 例10-1 定义如下结构体型。 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; 上一页 下一页 返回

10.1结构体类型和结构体变量 ·注意不要忽略最后的分号。struct student向编译系统声明这是一个 “结构体类型”,它包括num、name、sex、age、score和addr等 不同类型的数据项。应当说明structstudent是一个类型名,它和系 统提供的标准类型(如int、char、float和double等)一样具有同样 的地位和作用,都可以用来定义变量的类型,只不过结构体类型需要 由用户自己指定而己。 ·在程序中,结构体型的定义可在函数内部,也可在函数外部。在函数 内部定义的结构体型,其可见性仅限于该函数内部,而在函数外部定 义的结构体型,在其后的所有函数中都是可见的。 上一页下一页返回
10.1 结构体类型和结构体变量 注意不要忽略最后的分号。struct student向编译系统声明这是一个 “结构体类型”,它包括num、name、sex、age、score和addr等 不同类型的数据项。应当说明struct student是一个类型名,它和系 统提供的标准类型(如int、char、float和double等)一样具有同样 的地位和作用,都可以用来定义变量的类型,只不过结构体类型需要 由用户自己指定而已。 在程序中,结构体型的定义可在函数内部,也可在函数外部。在函数 内部定义的结构体型,其可见性仅限于该函数内部,而在函数外部定 义的结构体型,在其后的所有函数中都是可见的。 上一页 下一页 返回

10.1结构体类型和结构体变量 ·10.1.2结构体变量的定义 量全复鹅体疑形餐宪义,就可说明该结构体型变量。因此,结构体变 ·struct结构体名结构变量名; ·定义结构体型变量有3种方法: ·1.先声明结构体类型再定义变量名 ·如上面已定义了一个结构体类型structstudent,可以用它来定义变 量。如: ·struct student(结构体类型名)studentr,student2(结构体变量 名); ‘爱茶程瓷 上一页下一页返回
10.1 结构体类型和结构体变量 10.1.2 结构体变量的定义 一个结构体型一经定义,就可说明该结构体型变量。因此,结构体变 量定义的一般形式为: struct 结构体名 结构变量名; 定义结构体型变量有3种方法: 1.先声明结构体类型再定义变量名 如上面已定义了一个结构体类型struct student,可以用它来定义变 量。如: struct student(结构体类型名) student1,student2(结构体变量 名); 定义了student1和student2为struct student类型的变量,即它们具 有struct student类型的结构。在定义了结构体变量后,系统会为它 们分配内存单元。 上一页 下一页 返回

10.1结构体类型和结构体变量 ·应当注意的是,将一个变量定义为标准类型与定义为结构体类型,它 们不同之处在于后者不仅要求指定变量为结构体类型,而且要求指定 为某一特定的结构体类型。如structstudent。. ·2在声明类型的同时定义变量 ·结构体型定义了结构体变量的定义也可以同时进行。这时,被定义的 结构体变量直接在结构体型定义的大括号{后给出,例如: 上一页下一页返回
10.1 结构体类型和结构体变量 应当注意的是,将一个变量定义为标准类型与定义为结构体类型,它 们不同之处在于后者不仅要求指定变量为结构体类型,而且要求指定 为某一特定的结构体类型。如struct student。 2.在声明类型的同时定义变量 结构体型定义了结构体变量的定义也可以同时进行。这时,被定义的 结构体变量直接在结构体型定义的大括号{ }后给出,例如: 上一页 下一页 返回

10.1结构体类型和结构体变量 ●struct student 。{int num; ·char name[2o]; ●char sex; ·int age; ·float score; ·char addr[3o]; ·studenti,student2; 上一页下一页返回
10.1 结构体类型和结构体变量 struct student {int num; char name[20]; char sex; int age; float score; char addr[30]; }student1,student2; 上一页 下一页 返回

10.1结构体类型和结构体变 量 ·它的作用与第种方法相同,即定义了两个struct student类型的变量 studenti、student2。这种形式的定义的一般形式为: ·struct:结构体名 。{ ·成员表列 ·变量名表列; 上一页下一页返回
10.1 结构体类型和结构体变 量 它的作用与第1种方法相同,即定义了两个struct student类型的变量 student1、student2。这种形式的定义的一般形式为: struct结构体名 { 成员表列 }变量名表列; 上一页 下一页 返回