C語言中的位段(位域)知識

2021-09-25 06:39:20 字數 563 閱讀 8072

在結構體或類中,為了節省成員的儲存空間,可以定義某些由位組成的字段,

這些字段可以不需要以byte為單位。 這些不同位長度的字段

實際儲存於乙個或多個整形變數。位段成員必須宣告為int, signed int, unsigned int型別。

在成員的後面是乙個冒號和乙個整數,這個整數指定該位段所占用的位的數目。位段範例:

struct char

struct char ch1;

這個宣告取自乙個文字格式化的**,它可以處理多達128個字元(7個位),64種不同字型(6個位),0到524287個單位的長度。

位段使程式設計師能夠利用儲存ch和font所剩餘的位來增加size的位數。

位段好處:

1 能夠把長度為奇數的資料報裝在一起,節省儲存空間。

2 方便訪問整形值的部分內容。

位段的缺點:

移植性較差,位段的成員在記憶體中是從左到右分配還是從右到左分配根據系統來定。

注意點:由於取位址操作符不能應用在位段上,所以沒有能指向位段的指標。估計因為位段的存放位置不是按照位元組為單位來存放的。

位段也不能是靜態成員。

聊聊C語言中的位段 位域

我們知道,在c中,char佔據8的位,你可以這麼理解 乙個廁所有8個坑位,剛好組成乙個char.在32位機器上,乙個int占領32個坑位,一眼望去,就是32個坑,何其壯觀。如果有人蹲在其中,表示1,如果沒有人蹲在其中,表示0.有時候,需要用乙個變數表示 開 關 狀態,說白了,也就是0和1.如果用in...

C語言中位域

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

C語言中的位域

struct 位域結構名 1 使用位域可能不如使用位運算子的執行速度快,但是位域使程式更容易閱讀。2 如果某個作用域中定義了位域結構,則在該作用域中就不能使用typedef或 define來定義與位域結構名相同的型別名。3 在之前的標準中,位域型別必須是int unsigned int或signed...