1、第九章l 本章要点结构体的概念结构体的定义和引用结构体数组 l 主要内容9.1 结构体类型和结构体变量9.2 结构体数组 9.3 结构体指针 9.4 用指针处理链表9.5 共用体类型9.6 枚举类型 9.7 用 typedef命名类型9.1 结构体类型和结构体变量9.1.1 结构体类型n 问题定义:有时需要将不同类型的数据组合成一个有机的整体,以便于引用。 如:一个学生有学号 /姓名 /性别 /年龄 /地址等属性 int num; char name20; char sex; int age; int char addr30;应当把它们组织成一个组合项,在一个组合项中包含若干个类型不同(当然也
2、可以相同)的数据项。图 9-1100101 Li Fun M 18 87.5 BeijingNum name sex age score addrn 声明一个结构体类型的一般形式为:struct 结构体名成员表列;如: struct studentint num;char name20;char sex;int age;float score;char addr30;结构体名类型名 成员名9.1 结构体类型和结构体变量9.1.1 结构体类型说明:(1)结构体类型并不是只有一种,而是可以设计出许多种结构体类型 .(2) 成员也可以是一个结构体变量。(3)“ 结构体 ” 这个词是根据英文单词译出的
3、。 9.1 结构体类型和结构体变量9.1.1 结构体类型9.1.2 定义结构体类型变量n 可以采取以下 3种方法定义结构体类型变量:(1)先声明结构体类型再定义变量名例如: struct student student1, student2;| | | 结构体类型名 结构体变量名 定义了 student1和 student2为 struct student类型的变量,即它们具有 struct student类型的结构 .图 9-3student1100101 ZhangXin M 19 90.5 Shanghai100102 WangLi F 20 98 Beijingstudent2在定义了
4、结构体变量后,系统会为之分配内存单元。例如 :student1和 student2在 Turbo C的内存中各占 59个字节( 2+20+1+2+4+30=59)。(2)在声明类型的同时定义变量这种形式的定义的一般形式为 :struct 结构体名成员表列 变量名表列;9.1.2 定义结构体类型变量例如:struct student int num;char name20;char sex;int age;float score;char addr30; student1,student2;它的作用与第一种方法相同,即定义了两个 struct student 类型的变量 student1,student2 9.1.2 定义结构体类型变量(3) 不指定类型名而直接定义结构体类型变量其一般形式为 :struct成员表列 变量名表列;即不出现结构体名。 注意:注意:(1) 结构体类型与结构体变量是不同的概念,不能混同。 (2) 结构体类型中的成员名可以与程序中的变量名相同 ,但二者不代表同一对象。 (3) 对结构体变量中的成员(即 “ 域 ” ),可以单独使用,它的作用与地位相当于普通变量。9.1.2 定义结构体类型变量