一、结构体类型
1、结构体类型的定义
struct 类型名
{
数据类型1 成员变量1;
数据类型2 成员变量2;
数据类型3 成员变量3;
...
};
结构体中的数据类型可以是:
1.基本数据类型 short int long float double
2.数组 int a[5]; int a[2][3];
3.构造的数据类型 struct date d; struct time t;
2、结构体变量的定义
数据类型 变量名;
struct datetime dt;
3、结构体元素的访问
. 结构体变量类型访问成员变量使用.
-> 结构体指针类型访问成员变量使用->
最终类型是由成员变量的类型决定
4、结构体的初始化
1.全部初始化
struct student s = {"zhangsan", 'm', 18, 100};
2.局部初始化
struct student s = {
.name = "zhangsan",
.age = 19,
};
3.对结构体清0的方法:
memset(&s, 0, sizeof(s));
bzero(&s, sizeof(s));
5、结构体的存储
内存对齐:
1.结构体成员变量只能存放在内存地址为自身基本类型长度整数倍的内存单元中
2.结构体大小必须为最大成员变量类型的整数倍
二、共同体
union 公用名 {
数据类型1 成员变量1;
数据类型2 成员变量2;
数据类型3 成员变量3;
..
};
注意:
1.结构体每个成员变量空间独立
2.共用体每个成员变量空间共享的
三、枚举类型
enum 枚举类型名
{
枚举常量1,
枚举常量2,
枚举常量3,
..
};
注意:
1.枚举变量的值在枚举常量中选择其一作为它的值
2.枚举常量默认为int类型,第一个枚举常量的值默认为0,
后续枚举常量的值为前一个枚举常量的值+1