第10章结构体与其它数据类型讲述.ppt
文本预览下载声明
第10章 结构体与其它数据类型 本章教学目的: 理解结构体和共用体的概念,掌握结构体数组和结构体指针的使用方法,了解用指针处理链表的基本操作,了解枚举类型的概念和用typedef定义类型的方法。 本章教学重点: 结构体和共用体的概念,结构体数组和结构体指针。 本章教学难点: 用指针处理链表。 本章作业: 172页10.1中的2、4,10.2中的2、4 10.1 结构体的概念 有时需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组合在一个整体中的数据是互相联系的。如一个学生的学号、姓名、性别、年龄、成绩、家庭住址等项。 如果将num、name、sex、age、score、addr分别定义为互相独立的简单变量,是难以反映它们之间的内在联系的。应把它们组织成一个组合项,一个组合项中包含若干个类型不同(也可以相同)的数据项。 例如,要用一个结构体来描述学生,每个学生,有学号、姓名、年龄、性别、成绩等数据。每项数据有不同的类型,类型为:学号(无符号整型)、姓名(字符型)、性别(字符型)、年龄(整型)、成绩(实型)等。要把这些和学生关联在一起,则需要声明以下结构体类型: struct student {unsigned num; char name[10]; char sex; int age; float score; }; 其中struct 是结构体的关键字;student是结构体的标识符,即结构体名;num、name[10]、sex、age、score 等是结构体成员,组成成员表列。 结构体的类型声明方式为: struct 结构体名 { 成员表列; }; 其中各成员应进行类型说明。 结构体类型声明时应注意以下几点: (1) 结构体类型声明并不引起内存分配,结构体类型变量的定义才引起内存的分配。 (2) 在声明结构体类型时,允许先声明过的结构体类型作另一个结构体类型的成员,如右所示。 10.2 结构体类型变量和数组 10.2.1 结构体类型变量 ? 1.结构体类型变量的定义 结构体变量定义有三种方法。 (1) 先声明结构体类型, 后定义变量。 这种方法的语法格式为: struct 结构体名 { 成员表列; }; struct 结构体名 结构体变量表; 例如: struct student { unsigned num; char name[10]; char sex; int age; float score; }; struct student student1,student2; 定义了student结构体类型的2个变量:student1,student2。 (2) 在声明结构体类型 的同时定义变量。 这种方法的语法格式为: struct 结构体名 { 成员表列; }结构体变量表; 例如: struct student { unsigned num; char name[10]; char sex; int age; float score; }student1,student2,student3; 定义了student结构体类型的三个变量:student1,student2,student3。 (3) 直接定义变量。 这种方法的语法格式为: struct { 成员表列; } 结构体变量表; 例如: struct { unsigned num; char name[10]; char sex; int age; float score; }student1,student2,student3; 直接定义了结构体类型的三个变量student1、student2和student3。但这种定义方式因无类型名,所以不能再定义更多的变量。 定义了一个结构体类型的变量后,系统就为其按结构分配相应的内存,其大小取决于结构体的具体成员,如前面所举的例子中,
显示全部