内容正文:
第9章 结构体、共用体与枚举类型
本章内容
9.1结构体类型的定义
9.2结构体变量
9.3结构体数组
9.4结构体类型指针
9.5结构体与函数
9.6链表
9.7共用体类型
9.8枚举类型
9.9类型定义
9.10综合案例
9.1结构体类型的定义
定义结构体类型的一般形式为:
struct 结构体类型名
{
成员说明列表
};
每个成员也必须作基本类型说明,其形式为:
类型说明符 成员名;
例如:
struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[40];
};
9.1结构体类型的定义
在结构体类型中,成员的类型还可以继续是另外一个结构体
struct date
{
int year; /*描述日期的年*/
int month; /*描述日期的月*/
int day; /*描述日期的日*/
};
struct teacher
{
int num; /*教师编号*/
char name[20]; /*教师姓名*/
char sex; /*教师性别*/
float salary; /*教师薪水*/
char addr[40]; /*教师住址*/
struct date hiredate; /*教师聘任时间*/
};
9.2结构体变量
9.2.1结构体变量的定义
先定义结构体类型,再定义结构体类型变量
定义结构体类型同时定义结构体类型变量
struct 结构体类型名
{
成员说明列表;
}变量名列表;
直接定义结构体类型变量
struct
{
成员说明列表;
}变量名列表;
struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[40];
};
struct student student1,student2; /* 定义结构体类型变量*/
struct student student3,student4;
#define STUDENT struct student
STUDENT
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[40];
};
STUDENT student1,student2;
struct data
{
int day;
int month;
int year;
} time1,time2;
struct
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[40];
}student1,student2;
9.2.2结构体变量的使用
结构体变量成员的一般形式是:
结构体变量名.成员名
例如:
student1.num /*student1的学号*/
student2.sex /*student2的性别*/
struct date
{
int year; /*描述日期的年*/
int month; /*描述日期的月*/
int day; /*描述日期的日*/
};
struct teacher
{
int num; /*教师编号*/
char name[20]; /*教师姓名*/
char sex; /*教师性别*/
float salary; /*教师薪水*/
char addr[40]; /*教师住址*/
struct date hiredate; /*教师聘任时间*/
}teacher1,teacher2,teacher3;
teacher1.num=1001;
strcpy(teacher1.name,”ZhangSan”);
teacher1.sex=’M’;
teacher1.salary=2000;
strcpy(teacher1.addr,”Hebei Baoding”);
teacher1.hiredate.year=2007;
teacher1.hiredate.month=7;
teacher1.hiredate.day=1;
9.2.2结构体变量的使用
结构体的最低一级的成员也可以进行其它运算,如赋值运算、取地址运算、算术运算等
例如:
scanf(“%d”,&teacher2.hiredate.year);
teacher2.salary=teacher1.salary*0.8;
teacher2.sex=teacher1.sex;
结构体变量可以直接赋值给另一个结构体变量
te