共用體和枚舉

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章