1、共用体,联合体union
意义:
一般用来节省空间,因为有些数据项是不可能同时出现的。联合体中的所有成员是共享一段内存的。
特征:
(1)所有成员相对于基地址的偏移量都是0;
(2)此结构空间要大到足够容纳最宽的成员;
(3)对齐方式要适合其中所有成员;
例子:
union MyUnion
{
char s[9];//9个字节
int n;//4个字节
double d;//8个字节
};
int nSizeUnion = sizeof(MyUnion);
解释:
(1)内存大小足够容纳最宽的成员;
(2)内存大小能被包含的所有基本数据类型的大小所整除;
综上所述,最宽成员是第一个,占9个字节,同时要对齐,被4和8整除,所有占用空间大小为16字节。
2、枚举
意义:把一串名字与一串整型值联系在一起。
例子:
#define MONDAY 1
#define TUESDAY 2
#define WEDSDAY 3
#define THURSDAY 4
#define FRIDAY 5
#define SATURDAY 6
#define SUNDAY 7
typedef enum Weekday_tag
{
MONDAY = 1,
TUESDAY,
WEDSDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY,
}Weekday;
注意:
缺省情况下,整型值从零开始,如果对列表中的某个标识符进行了赋值,那么紧跟其后的那个标识符的值就比所赋的值大1,然后类推。