文档介绍:第十五讲结构体与共用体
结构体的定义
定义结构体类型的变量
结构体类型变量的引用
结构体变量的初始化
格式:struct 结构体名{类型名成员名表};
功能:定义一个结构体类型。
说明:
(1)struct是关键字,是结构体类型必不可少的标识符。
(2)结构体名是用户自己定义的标识符,与变量类
型名相同。
(3)花括号“{ }”中是组成该结构体类型的成员数据项,或称为结构体中的分量。
(4)结构体成员的数据类型可以是简单类型、数组、指针或已定义过的结构等。
(5)整个定义以分号结束。
num
name
sex
age
score
Addr
99001
wangli
m
20
90
shanghai
例如:一个学生的学号、姓名、性别、年龄、成绩、家庭住址
把上述各项组织成一个组合项,在一个组合项中包含若干个类型不同的数据项,这一组合项的数据结构称为结构体。
Struct student
{int num;
Char nam[20];
Char sex;
Int age;
Float score;
Char addr[30];
};
注意此处有分号
定义结构体类型变量
先定义结构体类型再定义变量名
语句:
Struct student student1 ,student2;
结构体类型名
结构体变量名
10001
zhangxin
m
19
shanghai
10002
wangli
f
20
90
beijing
student1
student2
在定义类型的同时定义变量
格式:struct 结构体 名
{成员表列}变量名表列;
如:
struct student
{int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}student1,student2;
直接定义结构类型变量
格式:
struct
{成员表列
}变量名表列;
不出现结构体名
说明:
(1)类型与变量是不同的概念,不要混同。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。
(2)对结构体中的成员,可以单独使用,它的作用与地位相当于普通变量。
(3)成员也可以是一个结构体变量。
(4)成员名可以与程序中的变量名相同,二者不代表同一对象。
例如:
struct date
{int month;
int day;
int year;
};
struct student
{int num;
char name[20];
char sex;
int age;
struct date birthday;
char addr[30];
}student1,student2;
num
name
sex
age
birthday
addr
month
day
year
结构体类型变量的引用
结构体类型变量的引用格式
对结构体变量的引用,是通过对每个成员的引用实现的,其一般形式如下:
如:结构体变量birthday中的三个成员可分别表示为
如果成员本身又属于结构体类型,则要用若干个成员运算符,一级一级地找到最低一级成员。只能对最低一级成员赋值、存取或运算。如:
student1.
student1.
student1.
结构体变量的引用规则
(1)不能将一个结构体变量作为一个整体进行输入和输出
(2)对结构体变量中的成员都可以像同类型的普通变量一样进行各种运算。如:
=9901;
=20;
++;等
(3)可以引用成员的地址,也可以引用结构体变量的地址。但不能整体输入或输出结构体变量。
如:
Scanf(“%d”,&);
Printf(“%o,&student1);
Scanf(“%d,%s,%c,%d,%f,%s”,&student1);
合理的形式
不合理的形式