c++位域
visual studio 2012 - visual c++
c++位域
類和結構可以包含比整型占用小於儲存的成員。
這些成員指定為位域。
位域 成員宣告 規範的語法如下:
declarator : constant-expression
備註(可選) declarator 是該成員在程式捕獲的名稱。
它必須是整型 (包括列舉型別)。
常數表示式 指定該成員在結構占用的位數。
匿名位域,即不識別符號的位域成員 )可用於填充使用。
說明
寬度為 0 的乙個未命名的位域強制下一位域的對齊到下一 type 邊界, type 是該成員的型別。
下面的示例宣告一位域的機制:
// bit_fields1.cpp
// compile with: /ld
struct date ;
型別 date 物件的概念記憶體布局如下圖所示。
date 物件記憶體布局
請注意 nyear 長度為 8 位並將導致溢位該宣告的型別,unsigned short的字邊界。
因此,它在新unsigned short的開頭開始。
不需要的與基礎型別的物件所有位域;儲存新的單位基於在宣告請求的位數分配,。
microsoft 專用
作為位域宣告的排序資料是從低到高位,如上面該圖所示。
特定於 microsoft 的結尾
如下面的示例所示,如果結構的宣告包括長度為 0 的乙個未命名的字段,,
// bit_fields2.cpp
// compile with: /ld
struct date ;
如下圖所示,記憶體布局是。
date 物件布局與零的位域的
位域的基礎型別必須是整型,如
基礎型別
所述。
C語言學習筆記 位域
如果程式的結構中包含多個開關量,只有 true false 變數,如下 struct status 此種結構需要 8 位元組的記憶體空間,但在實際上,在每個變數中,我們只儲存 0 或 1。在這種情況下,c 語言提供了一種更好的利用記憶體空間的方式。struct status 現在,上面的結構中,st...
C語言位域
有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存 放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分為幾個不同的區域,並說明每個區域的位...
C語言位域
1.乙個位域必須儲存在同乙個位元組中,不能跨兩個位元組。如乙個位元組所剩空間不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。例如 struct bs 在這個位域定義中,a佔第一位元組的 2位,後6位填 0表示不使用,c 從第二位元組開始,占用1位 2.由於位域不允許跨...