枚举类与共同体
枚举类型
实际问题中,有些变量的取值被限制在一定范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等。
C语言提供了一种枚举(Enum)类型,可以列出所有可能的取值。定义形式为:
enum 变量名{ 枚举值列表 };
枚举值为常量,不是变量,不能赋值。枚举值默认从0开始,逐个加1。也就是说,下面的代码定义了7个常量,分别为 sun、mon…sat,它们的值分别为 0、1…6。
enum week {sun, mon, tue, wed, thu, fri, sat};
共同体
共用体(共同体)的定义和结构体类似,不过结构体的各个成员都会分配相应的内存空间,而共用体的所有成员共享一段内存,它们的起始地址一样,并且同一时刻只能使用其中的一个成员变量。(不常见) 共同体定义的格式
union 共同体名 {
成员列表
};
共用体所占用的内存空间大小等于最长的成员所占用的字节数。共用体使用了覆盖技术,几个成员变量相互覆盖,从而使几个不同变量共占同一段内存。这也就意味着,同一时刻只能存放一个成员变量的值,只能有一个成员存在,不可能像结构体一样同时存放。如果对新的成员变量赋值,就会把原来成员变量的值覆盖掉。