在实际的处理对象中,有许多信息是由多个不同类型的数据组合在一起进行描述,而且这些不同类型的数据是互相联系组成了一个有机的整体。此时,就要用到一种新的构造类型数据——结构体(structure),简称结构。
一、定义
定义一个结构类型的一般形式为
struct 结构体名
{
数据类型 成员名1;
数据类型 成员名2;
数据类型 成员名n;
};
结构体属于C语言的一种数据类型,与整型、实型相当,不要和结构体变量搞混!!定义类型时不分配空间,只有用它定义变量时才分配空间。
定义结构体变量的三种方式
1.先定义结构体类型再定义变量名(常用方式)
struct 结构体名
{
成员列表;
};
struct 结构体名 变量名;
struct worker
{
long number;
char name[20];
char sex;
int age;
float salary;
char address[80];
char phone[20];
};
struct worker worker1,worker2;
2.在定义类型的同时定义变量
struct 结构体名
{
成员列表;
}变量名;
struct worker
{
long number;
char name[20];
char sex;
int age;
float salary;
char address[80];
char phone[20];
} worker1,worker2;
3.直接定义结构类型变量
struct //没有结构体名
{
成员列表;
}变量名;
struct
{
long number;
char name[20];
char sex;
int age;
float salary;
char address[80];
char phone[20];
} worker1,worker2;
二、大小
一个结构体变量占用内存的实际大小,也可以利用sizeof求出。
sizeof(struct worker)
sizeof(worker1)
结构体的大小由上面决定呢?这个没有显示的约定,不同编译器可能会有不同的结果。
三、结构体变量的使用形式
结构体变量名.成员名
worker1.age=26;
四、结构体数组与指针
结构体类型定义的数组就是结构体数组。
1.结构体数组
1.1定义(方式一)
struct student
{
char name[20];
char sex;
int age;
char addr[20];
};
struct student stu[3];
在定义数组同时初始化,这点和数组一样。
1.2引用其中一个学生的name
stu[1].name
2.结构体指针
要知道,指针就是地址,那结构体指针就是结构体首地址。
而指针变量是存放地址的容器,结构体指针变量是存放结构体的首地址容器。
2.1定义
struct 结构体名 *结构指针名;
2.2访问其中一个结构体元素的成员变量
结构体指针名->成员名
等同于
(*结构体指针名).成员名