結構體位域

2021-09-28 11:23:36 字數 467 閱讀 9332

c語言允許在結構體中以位為單位設定成員所佔的記憶體空間。以位為單位的成員,簡稱為位域或位段(bit field)。其優點是較少的位數儲存資料從而節省空間,還可以進行記憶體對齊。

例如下列結構體內的變數使用了位域,占用空間只有1位元組(8bit)。相對於不使用位域的縮少了3位元組(24bit)的資料。

struct

bunch;

/* sizeof(bunch) => 1 */

無名位域(沒有給出識別符號名字),無名位域可用於填充記憶體布局,使得下乙個位域記憶體分配邊界對齊

struct

bunch;

/* sizeof(bunch) => 2 */

c語言結構體位域

位域 有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分為幾個不同的區域,並說明每個區...

3 結構體位域大小端總結

結構體內部如果是位域操作,在不同的平台也有大小端的問題。1.案例一分析 小端格式 大端格式 typedef struct yaabou com yaabou com str yaabou com str str 令 str.c 1 str.g 8 str.b 2 小端格式 記憶體分配 低位元組在前 ...

聯合體,位域, 結構體對齊

聯合體union 當多個資料需要共享記憶體或者多個資料每次只取其一時,可以利用聯合體 union 在c programming language 一書中對於聯合體是這麼描述的 1 聯合體是乙個結構 2 它的所有成員相對於基位址的偏移量都為0 3 此結構空間要大到足夠容納最 寬 的成員 1下面解釋這四...