在結構體或類中,爲了節省成員的存儲空間,能夠定義某些由位組成的字段,
這些字段能夠不須要以byte爲單位。 這些不一樣位長度的字段
實際存儲於一個或多個整形變量。位段成員必須聲明爲int, signed int, unsigned int類型。
在成員的後面是一個冒號和一個整數,這個整數指定該位段所佔用的位的數目。位段範例:
struct CHAR
{
unsigned ch : 7;
unsigned font : 6;
unsigned size : 19;
}
struct CHAR ch1;
這個聲明取自一個文本格式化的代碼,它能夠處理多達128個字符(7個位),64種不一樣字體(6個位),0到524287個單位的長度。
位段使程序員可以利用存儲ch和font所剩餘的位來增長size的位數。
位段好處:
1 可以把長度爲奇數的數據包裝在一塊兒,節省存儲空間。
2 方便訪問整形值的部份內容。
位段的缺點:
移植性較差,位段的成員在內存中是從左到右分配仍是從右到左分配根據系統來定。
注意點:因爲取地址操做符不能應用在位段上,因此沒有能指向位段的指針。估計由於位段的存放位置不是按照字節爲單位來存放的。
位段也不能是靜態成員。程序員