结构体
1、结构体作用
结构体是一种数据类型,是一种自定义的数据类型,需要开发者自己创造,结构体可以存放不同数据类型的数据。
2、结构体类型
定义结构体类型:
Struct 结构体名
{
成员类型 成员名;
成员类型 成员名;
成员类型 成员名;
......
};
3、结构体变量
结构体变量的使用需要先定义一个结构体,再创建变量。
如:struct student
{
char name[20];
float score;
int a[5];
};
//定义一个结构体变量
struct student a;
再需要对结构体变量里成员进行操作时,运用.(点)语法
4、结构体类型起别名方式
typedef 数据类型 别名;
如:typedef struct student
{
char name[20];
float score;
int a[5];
}STU;
STU就是结构体struct student的别名,可以直接使用。
规律:
结构体定义前面有typedef后面的是类型别名也是类型
结构体定义前面没有typedef后面是空间名称(结构体变量)
5、结构体成员在内存中的空间分布
按照成员定义的顺序,遵循字节对齐的原则存储
字节对齐的原则:
(1)、找成员中占据字节数最大的成员,以它的字节数为单位进行空间分配(遇到数组看元素的类型)
(2)每个成员距离它所在结构体空间的首地址,必须是它所占字节的整数倍
(3)结构体空间必须是所占字节数最大成员的整数倍
6、结构体指针
是指针,指向的对象是结构体
定义格式:结构体类型 *指针名
在需要结构体指针操作指向空间的成员时运用“->”(指针名->成员名)
例:struct student
{
char name[20];
float score;
};
// 定义一个结构体指针
struct student *p;
7、结构体数组
是数组,里面存放的是结构体
定义结构体数组:
结构体类型 数组名[元素个数];
如:struct student
{
char name[20];
float score;
};
// 定义一个数组存储3位同学的信息
struct student arr[3];