文档介绍:第9章结构体与共用体
结构体
num
name
Sex
age
addr
060001
Li Fang
F
18
Wuhan
060230
Lin Hong
F
16
Changsha
060212
Wu Qiang
M
18
Beijing
061122
Li Jun
M
17
Zhengzhou
060536
Zhang Xia
F
17
Shanghai
上表中某一学生的数据是由学生的学号、姓名、性别、年龄、家庭地址等数据项组成的,这些数据项是一组逻辑上相关的数据,如果将这些数据项分割开来孤立地考虑它们的属性,将导致操作的不便或逻辑错误。在C语言中,将这种由多个不同类型的数据项组合在一起形成的数据类型,称为结构体类型。
表9-1 学生表
结构体类型的定义
结构体类型定义的一般形式:
struct 标识符
{
类型名1 成员名1;
类型名2 成员名2;
…
类型名n 成员名n;
};
结构体类型的定义
例1 对某一学生数据(由学生的学号、姓名、性别、年龄、家庭地址等数据项组成)的结构体类型定义如下:
struct student
{
int num;
char name[20];
char sex;
int age;
char addr[30];
};
(5)结构体类型定义的嵌套。
例2:若某一学生数据包括学号、姓名、性别、出生年月、家庭地址,其中出生年月包括出生的年、月、日三个数据,则对某一学生数据的结构体类型定义如下:
②再定义student结构体:
struct student
{
int num;
char name[20];
char sex;
struct date birthday;
char addr[30];
};
①先定义date结构体:
struct date
{int year;
int month;
int day;
};
结构体类型的定义
结构体变量的定义
结构体变量的定义有三种处理方式:
(1)先定义结构体类型,再定义结构体变量。
例1:struct student
{
int num;
char name[20];
char sex;
int age;
char addr[30];
}; /*定义结构体类型struct student */
struct student a,b;
/*定义a、b为结构体类型struct student的变量*/
结构体变量的定义
(2)在定义结构体类型的同时定义结构体变量。
例2:struct student
{
int num;
char name[20];
char sex;
int age;
char addr[30];
} a,b;
结构体变量的定义
(3)直接定义结构类型变量。
例3:struct
{
int num;
char name[20];
char sex;
int age;
char addr[30];
} a,b;
结构体变量的引用
(1)引用结构体变量的成员。
格式: 结构体变量名·成员名
struct date
{
int year;
int month;
int day;
};
struct student
{
int num;
char name[20];
char sex;
struct date birthday;
char addr[30];
};
struct student a,b;
="Li Fang";
b. =12;
结构体变量的引用
对结构体变量中的成员都可以像同类型的普通变量一样进行各种运算。
例3:a. num=060001+5;
b. ++;
(2),但可以作为函数的参数或返回值而被整体引用,也可以将一个结构体变量作为一个整体赋给另一个具有相同类型的结构体变量。
例1:struct student a,b;
…
a=b;
(3)引用结构体变量的地址或成员的地址
struct student a,b;
scanf("%d",&);
printf("%x",&);
printf("%x",&a);
结构体变量的引用