列舉和聯合體

2021-10-10 22:42:44 字數 1126 閱讀 8951

(1)什麼是列舉

列舉顧名思義就是一一枚舉。

把可能的取值一一枚舉。

enum color//顏色

;

以上定義的 enum color 是列舉型別。 {}中的內容是列舉型別的可能取

值,也叫列舉常量 。

(2)列舉的值

enum color//顏色

;

(3)列舉的優點

1)增加**的可讀性和可維護性

2)和#define定義的識別符號比較列舉有型別檢查,更加嚴謹。

3)防止了命名汙染(封裝)

4)便於除錯

5)使用方便,一次可以定義多個常量

(1)什麼是聯合體

聯合也是一種特殊的自定義型別 這種型別定義的變數也包含一系列的成員,特徵是這些成員公用同一塊空間(所以聯合也叫共用體)。

//聯合型別的宣告

union un

;//聯合變數的定義

union un un;

//計算連個變數的大小

printf

("%d\n"

,sizeof

(un)

);

(2)聯合的特點

聯合的成員是共用同一塊記憶體空間的,這樣乙個聯合變數的大小,至少是最大成員的大小(因為聯合至少得有能力儲存最大的那個成員)。

union un

;union un un;

// 下面輸出的結果是一樣的嗎?

printf

("%d\n",&

(un.i));

printf

("%d\n",&

(un.c));

//下面輸出的結果是什麼?

un.i =

0x11223344

;un.c =

0x55

;printf

("%x\n"

, un.i)

(3)聯合大小的計算

1)聯合的大小至少是最大成員的大小。

2)當最大成員大小不是最大對齊數的整數倍的時候,就要對齊到最大對齊數的整數倍。

3)聯合體依舊有位元組對齊。

位元組對齊方法可看:

列舉和聯合體

列舉 列舉顧名思義就是一一枚舉。把可能的取值一一枚舉出來。比如,現實生活中 列舉的定義 enum day 星期 enum 性別 enum color 顏色 以上定義的 enum day,enum enum color 都是列舉型別。中的內容是列舉型別的可能取值,也叫列舉常量。這些可能取值都是有值的,...

列舉 聯合體 遞迴

一.列舉 1.列舉是乙個型別 乙個常量陣列 2.關鍵字 enum 1 enum week 3.宣告乙個enum week w 那麼sizeof w 的大小是4 w可以等於以上七個裡面中的任意乙個 只能在範圍之內賦值 預設情況下 不賦值第乙個從0開始 mon 0 tue 1 以此類推 但例如對thu進...

結構體 聯合體 列舉

1 結構體struct 結構體的作用 在網路協議 通訊控制 嵌入式系統的c c 程式設計中,我們要傳送的不是簡單的位元組流 char型陣列 二是多種資料組合起來的乙個整體,其表現形式是乙個結構體。使用struct的注意事項 1 下面看乙個題目 結果 6 12 這裡涉及到結構體的記憶體對齊方式。1 關...