位域結構允許在結構體中指定成員佔用的二進制位數,適合按位訪問標誌位、硬件寄存器等場景,比位運算更直觀。語法:
struct 位域結構名 {
數據類型 變量名: 位數;
數據類型 變量名: 位數;
...
} 位域變量;
int(signed/unsigned)struct {
unsigned incon: 8; // 低字節 0-7 位
unsigned txcolor: 4; // 高字節 0-3 位
unsigned bgcolor: 3; // 高字節 4-6 位
unsigned blink: 1; // 高字節第 7 位
} ch;
訪問方式同普通結構體:ch.bgcolor 等。
unsigned :0 強制換行struct info {
char name[8];
int age;
struct addr address;
float pay;
unsigned state: 1; // 第1位:狀態
unsigned paid: 1; // 第2位:工資發放標誌
} workers;
兩個標誌位僅佔 1 字節,若用獨立 char 或 int 則至少佔 2 字節。位域在嵌入式系統、網絡協議、文件格式解析中極為常見。