结构体类型定义:
struct 结构体名 { 数据类型 成员变量1; 数据类型 成员变量2; … };
定义自定义构造数据类型,用于封装多个不同类型的数据。
结构体变量定义:
struct 结构体名 变量名; (如 struct student a; )
定义具体的结构体变量,分配对应内存空间。
结构体变量全部初始化:
struct 结构体名 变量名 = {值1, 值2, …}; (如 struct student a = {"zhangsan", 'm', 17, 90}; )
一次性为所有成员变量赋值。
结构体变量局部初始化:
struct 结构体名 变量名 = {.成员名1 = 值1, .成员名2 = 值2, …}; (如 struct student a = {.name = "zhangsan", .score = 100}; )
仅为部分成员变量赋值,未赋值成员自动默认初始化。
结构体变量访问成员:
结构体变量名.成员名;
通过“.”运算符直接访问结构体变量的成员,用于读写成员值。
结构体指针访问成员:
结构体指针->成员名;
通过“->”运算符访问指针指向的结构体成员,适合指针操作场景。
结构体内存对齐:
结构体成员需存放在自身基本类型长度整数倍的地址,结构体总大小为最大基本类型长度的整数倍;
提升CPU内存访问效率,减少读取次数。
结构体作为函数参数:
1. 传值: void fun(struct date day); 传递结构体副本,函数内修改不影响原变量;
2. 传指针: void fun(struct date *pday); 传递结构体地址,可修改原变量,效率更高;
3. 返回结构体: struct date fun(void); 函数直接返回结构体类型数据。

