关键字
typedef
用于给已有类型取别名,typedef关键字后可能接一长段,遵循正常声明变量声明的语法,变量的名字即为别名,例如:
//声明一个长度为3的float数组类型,别名为point3
typedef float point3[3];
point3 p; //创建一个长度为3的float数组p
//声明一个别名为point的整型
typedef int point;
point p;
存在以下特别的情况:
- 结构体
结构体本身就是自定义类型,在C++中可以像用别名一样直接用结构体名创建对象,为结构体取别名通常是为了兼容老代码(在C中,创建结构体对象必须用struct+结构体名作为类型名),且和声明语法有所区别:
- 类
不必像简单的数据结构一样把类定义写在typedef后,在完整的类定义后使用typedef+类名+别名即可。
Union
联合体,允许在同一段内存中存储不同的数据类型中的一种,其长度是所有允许类型中最长的长度。
它有以下特点:
- 本质是一个结构体
- 它的左右成员相对于基地址的偏移量都是0
- 此结构的空间需要足够容纳最长的成员
- 内存对齐方式需要适用于所有成员