结构体与共用体
内容
说明
主要内容
重点
难点
问题提出
1.结构体的概念及其基本操作
2.结构体的引用方法
3.自学共用体
通过举例说明定义结构体的必要性。
和基本类型变量进行比较分析,进一步说明必须定义结构体类型。
1.结构体的概念及基本操作
2.结构体的引用方法
结构体的概念及基本操作
前面已经介绍了基本数据类型──整型、浮点型、字符型,也介绍了一种构造类型──数组,数组中各元素是属于同一种类型的。
例如:一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,各项的数据类型并不相同(如下图)
num name sex age score addr
10010
Li Fan
m
18
88
chengde
如果将num、name、sex、age、score、addr分别定义为互相独立的简单变量,难以反映它们之间的内在联系,如何解决此类问题呢?
一、结构体类型引入上例应该将数据组织成一个组合项,在一个组合项中包含若干个不同类型数据项,C语言没有提供这样的数据结构,因此用户必须在程序中建立所需结构体类型。
Struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30]; };
Struct student是一个类型名,Struct 是一个关键字,标志着这是一个结构体类型。
二、声明一个结构体的形式
Struct 结构体名
{成员表列};
其中,成员表列的格式为:
类型名 成员名;
三、定义结构体类型变量的方法
1.先声明结构体类型,再定义变量名已定义了一个结构体类型Struct student,可以用它定义变量。
Struct student
{int num;

char addr[30]; };
Struct student stud1,stud2;
2.在声明类型的同时定义变量
Struct student
{int num;

char addr[30]; } stud1,stud2;
3.直接定义结构类型变量
Struct
{int num;

char addr[30]; } stud1,stud2;
【说明】(1)类型与变量不同;
(2)成员可单独使用,作用和地位相当于普通变量;
(3)成员还可以是一个结构体变量;
Struct date
{ int month;
int day;
int year; }
Struct student
{ int num;

struct date birthday;
char addr[30]; } student1,student2;
(4)成员名可以和程序中的变量名相同,二者不代表用一个对象。
四、结构体变量的引用
【格式】 结构体变量名.成员名
【说明】1.对结构体变量中的成员分别进行输入输出。
2,如果成员本身又是一个结构体类型,只能对最低级的成员进
行赋值和运算。
3.对结构体成员的运算和普通变量一样,可以进行各种运算。
4.可以引用结构体变量的地址,也可引用结构体变量成员的地址。
五、结构体变量的初始化
和其它变量一样,对结构体变量可以在定义时指定初始值。
【例如】
{struct student
{long int num;
char name[20];
Char sex;
Char addr[20];
}a={89031,“li lin”,‘M’,“123 beijing Road”};
六、结构体数组
【定义】一个结构体变量中可以存放一组数据(如学生的学号、姓名、成绩、地址等数据)。如有多个学生的数据需要参加运算,显然应该使用数组,这就是结构体数组。
【说明】和定义结构体变量的方法相仿,只需说明其为数组即可。
七、共用体(自学)
八、小结了解结构体的概念和方法了解结构体的基本操作了解结构体的引用方法了解共用体的概念
只能对变量赋值、存取或运算,类型不行。
先声明一个
Struct date
类型,然后在
Struct student类型中,将成员
Birthday定义为Struct date类型。