1.结构体
把不同类型的数据组合成一个整体
所占内存长度是各成员所占内存的总和
typedef struct XXX
{
int a;
char b;
}txxx;
txxx data;
typedef struct XXX
{
int a:1;
int b:1;
int c:30;
}txxx;
使用typedef 定义结构体时,给XXX结构体起别名txxx,后续定义可以不用struct XXX,直接用txxx
2.结构体指针
typedef struct XXX
{
int a;
}txxx;
txxx *data;
(*data).a;
data->a;
3.联合体
使几个不同类型的变量共占一段内存
整个联合体所占内存长度为最长成员占的内存长度
typedef union XXX
{
int a;
char b;
}txxx;
txxx data;
4.联合体应用实例 - 判断大小端问题
union myunion
{
int a;
char b;
}
int little_endian(void)
{
union myunion data;
data.a = 0x12345678;
if(data.b == 0x78)
//小端
else if(data.b == 0x12)
//大端
}
5.联合体内嵌结构体
typedef union XXX
{
int all;
struct
{
int b:16;
int c:16;
}s;
}txxx;
txxx data;
data.all = 0;
data.s.b = 0;
6.枚举
enum
{
a = 0,
b,
c
};