列舉與聯合

2021-10-01 04:14:26 字數 1108 閱讀 9015

列舉:乙個被命名的整型常數的集合,關鍵字為:enum

列舉的定義與賦值:

enum day//關鍵字加列舉名

;

注意:1.像這樣沒有進行初始化,則代表從第乙個成員起,依次賦值為0,1,2…。但當其某個成員賦值(初始化)後,其後邊的成員按加1的規則確定其值。eg:

enum num

;

則a=0,b=0,c=1,d=3,e=4;

2.賦值時也可讓其等於某個負數,規則仍然不變。

3.列舉變數的賦值只能取已經定義好的列舉列表中的某個值,

eg:

//接上述**,建立乙個列舉變數

enum num ret;

ret = e;

//ret的賦值範圍為(a,b,c,d,e)

而不能如此定義:

ret =3;

若必須要這樣定義,則需要強制型別轉化

ret=

(enum num)3;

//等同於ret=d;

注意:在使用列舉常量時,要清楚其為常量,不可被賦值,也不可被改變

聯合:

一種特殊的自定義型別,可包含一系列的不同型別,相當於結構體;不過不同的是聯合中的成員共用一塊空間,所以在同一時間只能保留乙個屬性內容。

聯合關鍵字:union

聯合的定義

union un

;un有char

,int

,float三種屬性;

聯合大小計算

1.聯合大小至少是最大成員的大小;例如:上述聯合大小為8

2.當最大成員大小不是最大對齊數的整數倍時,就需要對齊至最大對齊數的整數倍處。例如:

union un

;

其最大對齊數為:int型的4;

最大成員為char[5],大小為5;

故此根據對其原則:聯合大小為8。

聯合,列舉與typedef

聯合,是乙個能在同一塊儲存空間儲存不同型別 不同時 資料的型別。因此為聯合的儲存空間為所有成員中佔據空間最大的。它允許建立乙個用於儲存乙個型別不定的值的變數。簡單點說,可以用該變數儲存char型別的,也可以用於儲存char 型別的,甚至是struct型別的。如 union author void t...

結構體列舉與聯合

基本介紹 struct是結構體的關鍵字,它將一些相關聯的資料打包成乙個整體,這些相關聯的資料可以是不同的型別。它們被稱為結構體的成員,結構體的成員可以是標量 陣列 指標 或者是其他結構體。結構的宣告 假設我們要建立學生檔案,要納入學生的姓名,年齡和性別三個內容。那麼我們可以通過建立乙個結構體來實現這...

C 結構 聯合與列舉

8.1 結構 是任意型別元素的集合。8.1.1 結構布局 結構型別的物件可以被賦值,作為實參傳入函式,或者作為函式返回。struct readout 布局方式 1 4 4 1 4 sizeof readout 12 短長短的風格,剩餘空間未使用 struct readout 布局方式 4 2 4 s...