一、结构体
1、定义:
可以将不同的数据类型封装在一起构建出来的一个新的类型
2、构造结构体的语法方式:
//声明一个结构体,就是创造了一种新的类型
struct 结构体名
{
成员列表 //类型名称 变量名;
};后面的分号不可省略
成员列表中的成员类型可以是c语言提供的基本类型,也可以是结构体或其他结构类型。
struct 结构体名
{
成员列表 //类型名称 变量名;
}a,b;
struct //结构体名圣罗的定义格式
{
成员列表 //类型名称 变量名;
}a,b;
3、定义变量
(1)声明结构体时直接定义变量
(2)struct 结构体名 变量列表
4、结构体初始化
如果成员类型是一个数组或是一个结构体类型,需加{ };
定义完成只能对单个进行初始化。
A
struct stu
{
int age;
int score;
}a={12,100};
B
struct stu a={12,100};//注意初始化的顺序
C
struct stu a//不考虑顺序赋值
{
.age=12,
.score=100
};
5、结构体的数组
struct date arr[10]={
{},
{},
…
};
6、结构体指针
struct date *p;
p=&arr;
(*p).age //p->age
7、结构体字节对齐
struct student
{
char name[10];//10补齐为4的倍数12
int age;//4
int math;//4
int chinese;//4
int english;//4
char sex;//1补齐为4的倍数4
};
//共28个字节
#program pack(size)//指定对齐规则1 2 4 8 16
//定义位段
struct student
{
char name[10] :1;//1
int age :2;//2
int math :3;//3
int chinese :5;//5
int english :4;//4
char sex;//1补齐为4的倍数4
};