c語言中,不同的成員使用共同的儲存區域的資料結構型別稱為共用體。(共用,聯合體),共用體在定義,說明,適用形式上與結構體相似。兩者本質上的不同在於使用記憶體的方式上。
定義:
union unionname;
成員共享具有瞬時共享性。typedef struct _structtestmystruct;
typedef union _uniontestmyunion;
int main() ;//這樣初始化只初始化第乙個成員
u.c = 12345678;
printf("%d %d %d\n",u.a,u.b,u.c);
return 0;
}//sizeof(struct) = 8 sizeof(union) = 4
/*0061fea8 0061feaa 0061feac
0061fea4 0061fea4 0061fea4
*///78 24910 12345678
共用體總結:typedef union _mixmix;
int main()
/*assassin
1634956129 無意義的數字
無意義的資料
23*/
共用體變數的位址和它的各個成員的位址都是同一位址。同乙個記憶體段可以用來存放幾種不同型別的成員,但是每一瞬間只能存放其中的一種,而不是同時存放幾種。
共用體變數中起作用的成員是最後一次存放的成員,在存入乙個新的成員後有的成員就是去作用。
共用體型別可以出現在結構體型別定義中,也可以定義共用體陣列。反之,結構體也可以出現在共用體型別定義中,陣列也可以作為共用體的成員。
typedef struct _staffgorp;
}staff;
int main() else
}for(int i = 0;i < 2;i++) else
}}/*
name:assassin
job:t
position:pro
name:seafwg
job:s
grade:99
name:assassin
job:pro
name:seafwg
job:99
*/
列舉定義了一組整型常量的集合,目的可讀性,語法跟結構體相同。union _unun;
int main() else
}//小端序!
定義:
enum 列舉型別
;
列舉與巨集定義聯絡://提供了一組常量的別名,以便程式的清晰可讀
enum day;
int main()
}
常見應用:#define mon 1
#define tue 2
#define wed 3
#define thu 4
#define fri 5
#define sat 6
#define sun 7
//<=> 類似與上述的巨集定義,通常用enum來定義統一管理:
enum day;
typedef enum _boolbool;
int main() else
}
結構體 共用體與列舉
part 1 一 結構體型別與程式設計應用 學生的記錄由學號和成績組成。n名學生的資料已在主函式中放入結構體陣列stu中。編寫函式 ndminlist,實現 把分數低的學生資料放在陣列t中,函式返回分數低的學生的人數。注意 分數低的學生可能不止乙個 include const int n 5 定義結...
結構體 共用體 列舉
結構體 共用體 列舉 分析 首先宣告的結構體元素year的位址是最低的 0012ff74 而最後宣告的day的位址是最高的 0012ff7c 而我們又知道在棧中宣告變數的時候,位址是從高到低的分配的.因此,切記在結構體中宣告的變數與直接在外面宣告是不一樣的.在結構體中,最先宣告的變數放在最低位的.另...
列舉,結構體,共用體
列舉的定義 enum log level dbg,inf,war,err,fat,all,offvoid writeinfor log level level switch level case dbg printf d n dbg 上述定義的列舉型別,預設為dbg 0,inf 1,依次類推。1 列...