struct
C语言中的struct可看做变量的集合
struct 使用方式
方式一:
方式二:
union
union只分配最大成员的空间,所有成员共享这个空间
同一时间只能储存其中一个数据成员
所有的数据成员具有相同的起始地址
union的使用受系统大小端影响
大异小同
大端模式:数据的高位,保存在内存的低地址中;数据的低位,保存在内存的高地址中
小端模式:数据的高位,保存在内存的高地址中;数据的低位,保存在内存的低地址中
union 可用于字节数组与整型/浮点型变量间转换
enum 枚举
enum是C语言中的一种自定义类型
enum值是可根据需要自定义的整型值
定义的第一个enum值默认为0
默认情况下的enum值是在前一个定义值的基础上加1
enum类型的变量只能取定义时的离散值
enum中定义的值是C语言中真正意义上的常量
在工程中enum多用于定义整型常量
枚举类型VS#define
#define宏变量只是简单的进行值替换,枚举常量是真正意义上的常量
#define宏常量无法被调试,枚举常量可以
#define宏常量无类型信息,枚举常量是一种特定类型的常量
typedef
typedef用于给一个已经存在的数据类型取别名
typedef本质上不能产生新类型
typedef 重命名的类型
- 可以在typedef语句之后定义
- 不能进行unsigned和signed扩展
用途
1.定义别名,用作同时声明指针型的多个对象
p1、p2都是指针
p3是指针,p4没有定义数据类型
2.简易结构体
typedef struct _tag_POINT{
int x;
int y;
}POINT;
int x;
int y;
}POINT;
POINT *p;
3.定义与平台无关的类型,易于移植
typedef long double REAL
陷阱
typedef char* PSTR;
const PSTR相当于char* const, const给予了整个指针常量性
typedef在语法上是一个存储类的关键字,不可与static、extern、register同时使用
存储类关键字只能指定一个
小结
struct 中的每个数据成员有独立的存储空间
union 中所有数据成员共享同一个存储空间
enum 用于定义离散值类型
enum 定义的值是真正意义上的常量
typedef 用于给类型重命名