C语言
第十一章
结构体与共同体
C语言
本章要点:
掌握结构和联合类型数据的定 义方法和引用方法; 2. 了解枚举类型数据的定义方法 和引用方法。
1.
C语言
11.1 概述
有时,需将不同类型的数据组合成一个有机的
整体,以便于引用。这些数据是相互联系的。 如一个学生的有关信息:
num 10010 name Li min sex M age 18 addr Dalian
可采用结构体数据结构描述上述信息。
C语言
例如:
是类型,不是变量名
定义一个结构体类型
struct student {int num; char name[20]; char sex; int age; char addr[30]; };
的一般形式为:
struct 结构体名 {成员表列};
对各成员都要进行类型说明; 成员名定名规则与变量名同。
C语言
11.2 定义结构体类型变量的方法
方法一:先定义结构体类型再定义变量名
struct student {int num; 不能只指定一个变 char name[20]; 量为“struct型”而不 定义studet1和 指定结构体名 char sex; sudent2为 int age; struct student char addr[30]; 类型变量 }; struct student student1, student2;
C语言
有时,可用符号常量代表一个结构体类型,如:
#define STUDENT struct student STUDENT {int num; 这样,可直接用STUDENT char name[20]; 定义变量,如: char sex; STUDENT student1, student2; int age; 此时,不必再写关键字struct char addr[30]; };
C语言
方法二:在定义类型的同时定义变量,如:
struct student {int num; char name[20]; char sex; int age; char addr[30]; }student1, student2;
一般形式是: struct 结构体名 { 成员表列 }变量名表列;
C语言
方法三:直接定义结构类型变量。
其一般形式是: struct { 成员表列 }变量名表列;
此时,不出现结构体名
C语言
几点说明:
1. 类型与变量是不同概念,不要混淆; 2. 结构体中的成员,可以单独使用,其作 用与地位相当 于普通变量; 3. 成员也可以是一个结构体变量;例如: Struct student struct date {int num; {int month; char name[20]; int day; int age; int year; struct date birthday; }; }student1,student2; 4. 成员名可以与程序中的变量名相同,二者不代表同一 对象。
C语言
11.3 结构体类型变量的引用
规则:
1. 不能将一个结构体变量作为一个整体进行赋值和 输出;只能对其各个成员分别输出(引用形式为: 结构体变量名.成员名)。 错! 正确! printf(“………..”,student1); printf(“ %d”, student1.num); 输出 10010
2 .若成员本身又属一个结构体类型,只能对最低级的成员进 行赋值或存取以及运算。 如:student1.birthday.year (续)
C语言
(接上片)
3. 对成员变量可以象普通变量一样进行各种运算, 如: sumage=student1.age+student2.age; 4. 可以引用成员的地址,也可以引用结构体变量的 地址,如 输入student1.num的值 scanf(“%d”,& student1.num); printf(“%o”,&student1);
输出student1的首地址
scanf(“%d
C语言
C语言
C语言
C语言
C语言
C语言
C语言
C语言
C语言
C语言