C語言基礎知識----聯合 && 枚舉 && 結構體
來源:程序員人生 發布時間:2014-09-15 01:46:03 閱讀次數:3409次
結構體
struct 結構體標簽(可選)
{
類型1 標識符1;
類型2 標識符2;
.......
}(變量定義可選);
聯合
union 可選的標簽
{
類型1 標識符1;
類型2 標識符2;
........
}可選的變量定義;
聯合與結構體相似,但內存布局上存在關鍵性的區別。結構體中每個成員順序存儲;而在聯合中,所有的成員都是從偏移量為零處開始存儲(位置是重疊的),并且在某一時刻,只有一個成員真正存儲于改地址。
枚舉(它用于聲明一組命名的常數,當一個變量有幾種可能的取值時,可以將它定義為枚舉類型)
enum 可選標簽{內容 .....}可選變量定義;
若對列表中的某個標識符進行了賦值,那么緊接其后的那個標志符就比所賦值大1.但對于前面未定義的標識符不能反推
枚舉中的名字通常一直在調試器中可見,可以在調試代碼時使用;而#define宏定義的常量,一般編譯時就被替換掉了。
示例program
[cpp]
view plaincopyprint?
- #include <stdio.h>
- struct s
- {
- int a;
- char c;
- } s1;
- enum e
- {
- a,b=3
- }e1;
- union u
- {
- int a;
- int b;
- char c;
- }u1;
- int main(void)
- {
- s1.a=3;
- u1.a=3;
- u1.b=4;
- e1=b;
- printf("struct:s1.a=%d
",s1.a);
- printf("enum:e1_b=%d
",e1);
- printf("union:u1.a.&=%x
",&u1.a);
- printf("union:u1.b.&=%x
",&u1.b);
- }
運行結果

從運行結果可知聯合中所有成員共用一個存儲地址,同時有且只有一個存在。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈