主要总结结构体、共用体、枚举以及链表的相关内容。
一、结构体
1.
如果要统计一个班的学生信息,那么这些信息包括名字,性别,学号,成绩等等,基本数据类型无法满足存放这些复杂信息的要求,这时候就需要用结构体来描述这一复杂的数据类型。
struct 结构体类型名
{
数据成员列表;
};
eg:
描述学生这种类型:
struct student
{
//name
char name[20]; //成员变量 各个成员变量之间 用分号隔开
//age
unsigned char age;//0~255 -128~127
//score
float score;
//...
}; //注意: 最后这个分号(;) 表示 --- 结构体类型定义完成
2.
结构体类型的指针变量的结构体访问成员的方式
结构体类型的变量.成员变量名
结构体类型的指针->成员变量名
3.
结构体的对齐规则:
1.在32位的平台上,默认都是按4字节对齐的;64位的平台默认是8字节对齐。
2.对于成员变量,各自在自己的自然边界上对齐。
3.如果 成员变量中有比4字节大, 此时整个结构体按照4字节对齐。 //32位的平台
4.如果 成员变量中没有有比4字节大,此时整个结构体按照最大的那个成员对齐。
自然边界对齐
int -- 4字节 --- 能被4整除的地址编号上
short -- 2字节 --- 能被2整除的地址编号上
char -- 1字节 --- 能被1整除的地址编号上
4.
注意:
1.结构体类型,可以定义在 函数里面,但是此时作用域就被限定在改函数中
2.结构体的定义的形式:
//形式1 先定义类型,后定义变量
struct stu
{
...
};
struct stu s;
//形式2 定义类型的同时定义变量
struct stu
{
...
}s1,s2,*s3,s4[10];
struct stu s;
//形式3 省略了类型名 --如果只用一次,可以这样写
struct
{
...
}s1,s2,*s3,s4[10];