C C 共用體與列舉

2022-05-21 08:56:05 字數 1830 閱讀 5924

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 列...