1.概述
C语言中可以自定义指定一个数据结构,是有不同类型的数据组合为一个整体,以便于使用,这些组合在这个整体中的数据是互相联系的,我们称这样的数据结构为结构体。
结构体声明如下:
struct 结构体名
{成员列表}
大括号内的就是结构体中的各个成员,它们组成一个结构体。
struct student
{
//成员的声明
//类型名 成员名
int num;
char name[20];
float score;
}
2.定义结构体类型变量的方法
为了可以在程序中使用结构类型的数据,应定义结构体类型的变量,在其中存放具体的数据,使用以下方法。
(1)声明类型的同时定义变量
例如:
struct student
{
int num;
char name[20];
float score;
}student1,student2;
定义两个struct student类型的变量student1,student2,一般形式如下:
struct 结构体名
{
成员列表
}变量名列表;
(2)直接定义结构体类型变量
struct
{
成员列表
}变量名列表;
不出现结构体名。
注意:
1.类型与变量是不同的概念,只能对变量赋值,存取和运算,而不能对一个类型赋值,存取和运算。
2.对结构体中的成员可以单元使用,作用相当于普通变量
3.成员也可以是结构体变量。如:
struct date // 声明一个结构体变量
{
int day;
int month;
}
struct student
{
int num;
char name[20];
int age;
struct date birthday;
}student1,student2;
声明一个struct date类型,其中有两个成员,在声明struct student类型时,将其中的成员birthday 也能指定为 struct date类型。
4.成员名可以与程序中的变量名相同,但二者不代表同一对象。
3.结构体变量的引用
(1)不能将一个结构体变量直接作为整体进行输入输出,只能对其中的各个成员进行输入输出。
方式为;
结构体变量名.成员名
例如:student1.num 表示student1中的成员,可以对变量的成员赋值。
eg:student1.num = 100;
. 是成员运算符,在运算符中优先级最高,因此可以将student1.num作为一个整体看待。
2.如果成员本身属于一个结构体类型,这要用到多个成员运算符,一级一级的找到最低一级的成员。对最低的成员进行赋值或者存取和运算。
eg:student1.birthday.month
3.对结构体成员可以像普通变量一样进行各种运算(根据其类型决定)
student1.score = student2.score
sum = student1.score + student2.score
student1.age ++;
++ student1.age;
4.可以引用结构体变量成员的地址。也可以引用结构体变量的地址。如:
scanf("%d",&student1.num);
printf("%o",&student1); //输出student1的首地址
结构体变量的地址主要用于作函数参数,传递结构体的地址。