枚举类型
关键字是enum,能够一一列举的类型能够使用枚举类型。例如:周一到周日、三原色的红绿蓝等等。
枚举类型里面的值是枚举常量,这些都是有值的,默认是从0开始,依次加1,在定义的时候可以赋初值。
enum color
{
red,
green = 20,
blue
};
枚举的好处
#define可以定义常量,枚举类型定义的也是常量,但是枚举类型有类型的检查。
#define定义的常量,预处理阶段就替换了,无法调试,枚举类型可以调试。
枚举能够增加代码的可读性。
可以一次定义多个常量。
联合体
关键字是union,联合体的成员公用一块空间。
联合体的使用
对于联合体的使用,只会使用其中一个成员变量,对其中一个成员变量的修改,都会影响另一个成员变量。
联合体能够用来判断大小端。
#include <stdio.h>
union A
{
char a;
int b;
};
int main()
{
union A u;
u.b = 1;
if (u.a)
printf("小端\n");
else
printf("大端\n");
return 0;
}
联合体的大小
联合体的大小是至少是最大成员变量的大小。
联合体也存在内存对齐
arr数组的元素类型是char类型的,所以数组的对齐数是1,b的对齐数是4,该联合体的最大对齐数是4,开辟的空间需要是4的倍数,字符数组开辟了6个字节的空间,需要再开辟2个空间完成对齐。