1. 程式人生 > >c語言結構體中的冒號的用法

c語言結構體中的冒號的用法

其中 bsp 位段 定義 main 一位 輸出 格式 data

結構體中常見的冒號的用法是表示位域。

有些信息在存儲時,並不需要占用一個完整的字節,而只需占幾個或一個二進制位。例如在存放一個開關量時,只有0和1兩種狀態,用一位二進位即可。為了節省存儲空間,並使處理簡便,C語言又提供了一種數據結構,稱為“位域”或“位段”。所謂“位域”是把一個字節中的二進位劃分為幾個不同的區域,並說明每個區域的位數。每個域有一個域名,允許在程序中按域名進行操作。這樣就可以把幾個不同的對象用一個字節的二進制位域來表示。

位域的定義和位域變量的說明位域定義與結構定義相仿,其形式為:

  struct 位域結構名

{ 位域列表 };

  其中位域列表的形式為: 類型說明符 位域名:位域長度。例如:
struct bs
{
 int a:8;
 int b:2;
 int c:6;
};

說明data為bs變量,共占兩個字節。其中位域a占8位,位域b占2位,位域c占6位。

位域的使用:位域的使用和結構成員的使用相同,其一般形式為: 位域變量名·位域名 位域允許用各種格式輸出。

main() {
 struct bs
 {
  unsigned a:1;

  unsigned b:3;
  unsigned c:4;
 } bit,*pbit;
 bit.a=1;
 bit.b=7;
 bit.c=15;
 printf("%d,%d,%d/n",bit.a,bit.b,bit.c);
 pbit=&bit;
 pbit->a=0;
 pbit->b&=3;
 pbit->c|=15;
 printf("%d,%d,%d/n",pbit->a,pbit->b,pbit->c);
}

c語言結構體中的冒號的用法