含义
结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量,结构体成员可以是普通变量,数组,指针,甚至是其它的结构体。
创建结构体变量并初始化
strcpy:给字符串赋值
在使用的过程中,发现结构体类型书写不方便,可以通过typedef关键字给结构体类型起别名:
(在struct前有typedef,大括号后的即为别名,否则为变量名 )
typedef struct Stu{
char name[50];// "张三"
char birthday[50]; // "1996-09-19"
int gender; // 1
char id[100]; // "20200102"
}Stu_t;
可以使用别名定义变量并初始化 Stu student = {"张三","1996-09-19",1,"20200102"};
(可写为 typedef struct Stu,Stu_t就代表整个结构体变量,通过别名获取结构体中的数据)
结构体的自引用
在结构体中包含一个类型为该结构体本身的成员
正确写法:
struct Node {
int ele;
struct Node* next; // 存放结构体指针类型的变量
};
结构体成员访问
结构体大小的计算
(位置偏移即为解引用*)
结构体的对齐规则:
1. 第一个成员在与结构体变量偏移量为0的地址处;
2. 其它成员变量要对齐到某个数字【对齐数】的整数倍的地址处 对齐数=编译器默认的一个对齐数与该成员大小的较小值;
3. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是 所有最大对齐数(含嵌套结构体的对齐数)的整数倍。