結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

C語言 結構體

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

更多C/C++學習資料,請私信我“代碼”,即可獲取

C 數組允許定義可存儲相同類型數據項的變量,結構是 C 編程中另一種用戶自定義的可用的數據類型,它允許您存儲不同類型的數據項。結構體說的通俗一點就是給基本數據成員的一種封裝,打包。數組是相同類型的數組,結構體可以是不同類型的數據組成的數組。

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

更多C/C++學習資料,請私信我“代碼”,即可獲取

定義結構體

為了定義結構,您必須使用 struct 語句。struct 語句定義了一個包含多個成員的新的數據類型,struct 語句的格式如下:

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

  • sturctName:
    是結構體名。
  • dataType:數據類型,int,char,float,double,甚至更復雜的
  • dataName:變量名

其他形態

1.沒有結構體名,只有結構體變量。

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

2.與typedef的基情

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

訪問結構成員

結構體中的成員只能通過結構體變量去訪問,就像男生只能去男廁所,女生去女廁所一樣。為了訪問結構的成員,我們使用成員訪問運算符(.)。成員訪問運算符是結構變量名稱和我們要訪問的結構成員之間的一個句號。您可以使用

struct 關鍵字來定義結構類型的變量。下面的實例演示了結構的用法:

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

主函數少了個返回值,手誤,勿吐槽,心裡明白就行。

結構體指針

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

更多C/C++學習資料,請私信我“代碼”,即可獲取

您可以定義指向結構的指針,方式與定義指向其他類型變量的指針相似,如:struct Books *struct_pointer;現在,您可以在上述定義的指針變量中存儲結構變量的地址。為了查找結構變量的地址,請把 & 運算符放在結構名稱的前面,如:struct_pointer = &Book1;為了使用指向該結構的指針訪問結構的成員,您必須使用 -> 運算符,如:struct_pointer->title;具體代碼如下圖所示:

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

結構作為函數參數

您可以把結構作為函數參數,傳參方式與其他類型的變量或指針類似。

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

特殊結構體-位段(位域)

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

更多C/C++學習資料,請私信我“代碼”,即可獲取

位域:位域在本質上就是一種結構類型,不過其成員是按二進位分配的。

有些信息在存儲時,並不需要佔用一個完整的字節,而只需佔幾個或一個二進制位。例如在存放一個開關量時,只有 0 和 1 兩種狀態,用 1 位二進位即可。為了節省存儲空間,並使處理簡便,C 語言又提供了一種數據結構,稱為"位域"或"位段"。

所謂"位域"是把一個字節中的二進位劃分為幾個不同的區域,並說明每個區域的位數。每個域有一個域名,允許在程序中按域名進行操作。這樣就可以把幾個不同的對象用一個字節的二進制位域來表示。

典型的實例:

  • 用 1 位二進位存放一個開關量時,只有 0 和 1 兩種狀態。
  • 讀取外部文件格式——可以讀取非標準的文件格式。例如:9 位的整數。

1.定義語法

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

2.案列

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

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

3.位段注意點

  • 一個位域必須存儲在同一個字節中,不能跨兩個字節。如一個字節所剩空間不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。
  • 由於位域不允許跨兩個字節,因此位域的長度不能大於一個字節的長度,也就是說不能超過8位二進位。如果最大長度大於計算機的整數字長,一些編譯器可能會允許域的內存重疊,另外一些編譯器可能會把大於一個域的部分存儲在下一個字中。
  • 位域可以是無名位域,這時它只用來作填充或調整位置。無名的位域是不能使用的。

使用方式上和結構體一樣,就不過分舉例說明了,好了今天的基礎教程就到這裡。快來誇讚下自己吧。

結構體中有一種特殊的存在叫做位域,C語言基礎教程之結構體

更多C/C++學習資料,請私信我“代碼”,即可獲取

更多精彩


分享到:


相關文章: