c語言學習筆記 結構體位域

2022-09-05 20:27:10 字數 451 閱讀 5416

在學習結構體的時候遇到了位域這個概念,位域主要是為了節省記憶體空間,比如用乙個32位,4個位元組的int儲存乙個開關變數時,會造成空間浪費,於是乾脆就考慮在這個32劃分不同的區域來儲存資料,例如劃出1位存這個開關變數。

struct tag{

unsigned int a;

unsigned int b;

這個結構體會占用2個int對應的 8個位元組,如果a,b存的是開關變數,僅僅需要2位即可,這樣也只是在乙個int裡劃分域就可以了

struct tag{

unsigned int a:1;    //外面賦值的時候也不能超過分配的位數能存的最大數  ,例如 這裡如果是 a:3 ,賦值不能超過 7

unsigned int b:1;

//這樣就只需2個位來存資料了,但雖然只用到2位,該結構體依然是占用了4個位元組,32位的。

struct

c語言結構體位域

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

C語言學習筆記 位域

如果程式的結構中包含多個開關量,只有 true false 變數,如下 struct status 此種結構需要 8 位元組的記憶體空間,但在實際上,在每個變數中,我們只儲存 0 或 1。在這種情況下,c 語言提供了一種更好的利用記憶體空間的方式。struct status 現在,上面的結構中,st...

C學習筆記(6) 共用體,位域深入

1.共用體 union 共用體是一種特殊的資料型別,允許您在相同的記憶體位置儲存不同的資料型別。您可以定義乙個帶有多成員的共用體,但是任何時候只能有乙個成員帶有值。共用體提供了一種使用相同的記憶體位置的有效方式。為了定義共用體,您必須使用union語句,方式與定義結構類似。例子 union data...