日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言struct中冒号用法

發布時間:2024/4/11 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言struct中冒号用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

typedef?struct

{

unsigned?char?unused_bits:4;

unsigned?char?wchair_state:2;

}?xyz;

?

typedef?struct

{

unsigned?char?unused_bits;

unsigned?char?wchair_state;

}?abc;

?

上面的xyz和abc有什么區別?

Xyz占了1 Byte,abc占了2 byte。冒號后表示位域,即該變量存儲時占用的位數。

?

?有些信息在存儲時,并不需要占用一個完整的字節,???而只需占幾個或一個二進制位。例如在存放一個開關量時,只有0和1???兩種狀態,???用一位二進位即可。為了節省存儲空間,并使處理簡便,C語言又提供了一種數據結構,稱為"位域"或"位段"。所謂"位域"是把一個字節中的二進位劃分為幾個不同的區域,???并說明每個區域的位數。每個域有一個域名,允許在程序中按域名進行操作。???這樣就可以把幾個不同的對象用一個字節的二進制位域來表示。一、位域的定義和位域變量的說明位域定義與結構定義相仿,其形式為:???????  struct???位域結構名???????  {???位域列表???};?????  其中位域列表的形式為:???類型說明符???位域名:位域長度???????  例如:???????struct???bs???
??{???
?? int???a:8;???
?? int???b:2;???
?? int???c:6;???
??};?????????  位域變量的說明與結構變量說明的方式相同。???可采用先定義后說明,同時定義說明或者直接說明這三種方式。例如:???????struct???bs???
??{???
?? int???a:8;???
?? int???b:2;???
?? int???c:6;???
??}data;???????  說明data為bs變量,共占兩個字節。其中位域a占8位,位域b占2位,位域c占6位。對于位域的定義尚有以下幾點說明:?????  1.???一個位域必須存儲在同一個字節中,不能跨兩個字節。如一個字節所??臻g不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。例如:??????struct???bs???
??{???
?? unsigned???a:4???
?? unsigned???:0??????
?? unsigned???b:4??????
?? unsigned???c:4???
??}???????  在這個位域定義中,a占第一字節的4位,后4位填0表示不使用,b從第二字節開始,占用4位,c占用4位。?????  2.???由于位域不允許跨兩個字節,因此位域的長度不能大于一個字節的長度,也就是說不能超過8位二進位。?????  3.???位域可以無位域名,這時它只用來作填充或調整位置。無名的位域是不能使用的。例如:???????struct???k???
??{???
?? int???a:1???
?? int???:2??????
?? int???b:3???
?? int???c:2???
??};?????????  從以上分析可以看出,位域在本質上就是一種結構類型,???不過其成員是按二進位分配的。????? 

?

總結

以上是生活随笔為你收集整理的C语言struct中冒号用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。