在結構體或類中,為了節省成員的存儲空間,可以定義某些由位組成的字段,
這些字段可以不需要以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 方便訪問整形值的部分內容。
位段的缺點:
移植性較差,位段的成員在內存中是從左到右分配還是從右到左分配根據系統來定。
注意點:由於取地址操作符不能應用在位段上,所以沒有能指向位段的指針。估計因為位段的存放位置不是按照字節為單位來存放的。
位段也不能是靜態成員。