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,然後類推。