《C專家程式設計》隨筆6 struct位域

2021-08-18 10:06:24 字數 737 閱讀 6071

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

「位域」

是把乙個位元組中的二進位劃分為幾個不同的區域,並說明每個區域的位數。

每個域有乙個網域名稱,允許在程式中按網域名稱進行操作。這樣就可以把幾個不同的物件用乙個位元組的二進位制位域來表示。

其中位域列表的形式為: 型別說明符 位網域名稱:位域長度

說明1. 乙個位域必須儲存在同乙個單元中,不能跨兩個單元。如乙個單元所剩空間不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。例如: 

struct bs 

這個位域定義中,a佔第一位元組的4位,後4位填0表示不使用,b從第二位元組開始,占用4位,c占用4位。 

說明2. 位域可以無位網域名稱,這時它只用來作填充或調整位置。無名的位域是不能使用的。例如: 

struct k 

; 從以上分析可以看出,位域在本質上就是一種結構型別, 不過其成員是按二進位分配的。

簡而言之,言而簡之

這是位域操作的表示方法,也就是說後面加上「:1」的意思是這個成員的大小佔所定義型別的1 bit,「:2」佔2 bit,依次類推。當然大小不能超過所定義型別包含的總bit數。

《C專家程式設計》筆記6

第六章 運動的詩章 執行時資料結構 a.out 它是assembler output 的縮寫形式 a.out 這個名字是unix 沒什麼理由,但我們就是這麼做的 思維的一例 超級塊 superblock unix 檔案系統中的基礎資料結構 就是用下面這個神奇數字唯一標識的 define ps mag...

《C專家程式設計》隨筆1 讀者心得

自己在閱讀完 c和指標 和 c陷阱與缺陷 之後,結合實際的專案,對c語言有了一定熟悉。c和指標 是一本非常不錯的c語言基礎書,詳細介紹了c語言的知識點,相對於譚浩強的紅書之外,學到了許多基礎知識,應該是乙個c語言入門的必備。c陷阱與缺陷 多講一些前輩們遇到的問題,自己看了一遍,可能對遇到的問題會有一...

《C專家程式設計》隨筆3 賦值傳遞

而 char cp const char ccp ccp cp 是合法的。why?解讀 要使賦值形式合法,必須滿足下列條件之一 兩個運算元都是指向有限定符或無限定符的相容型別的指標,左邊指標所指向的型別必須具有右邊指標所指向型別的全部限定符。假設,左運算元的型別是foo2,它是指向foo的指標,而f...