bilibiliclass57 C語言 位段

2021-10-12 21:26:19 字數 1045 閱讀 6673

目錄:

什麼是位段?

位段的記憶體分配

位段的跨平台問題

位段的應用:網路資料的傳輸

結構體實現 位段

位段的宣告和結構是類似的,有兩個不同

1.位段的成員必須是 int、unsigned int 或signed int

(其實char也可以)(通常位段的型別是相同或相似的成員)

2.位段的成員名後邊有乙個冒號和乙個數字。

位段簡單例子

struct a

;

位段的空間上是按照需要以4個位元組( int )或者1個位元組( char )的方式來開闢的

struct a

;

共計47bit

1位元組==8bit

由於位段型別為int,所以一次開闢4位元組==32bit

開闢32bit

{a-2bit

b-5bit

c-10bit

剩餘32-17=15bit除錯->視窗->記憶體

1. int 位段被當成有符號數還是無符號數是不確定的。

2. 位段中最大位的數目不能確定。(16位機器最大16,32位機器最大32,寫成27,在16位機器會出問題)

3. 位段中的成員在記憶體中從左向右分配,還是從右向左分配標準尚未定義。

4. 當乙個結構包含兩個位段,第二個位段成員比較大,無法容納於第乙個位段剩餘的位時,是捨棄剩餘的位還是利用,這是不確定的。

總結:

跟結構相比,位段可以達到同樣的效果,

但是可以很好的節省空間,但是有跨平台的問題存在。

bilibiliclass30 C語言 指標的高階

在寫 的時候難免要把 陣列 或者 指標 傳給函式,那函式的引數該如何設計呢?一維陣列傳參 include void test int arr ok void test int arr 10 ok void test int arr ok,傳過去的也是首元素的位址 void test2 int arr...

bilibiliclass6 分支與迴圈

c語言是一中結構化的語句 世界上的結構只有三種 順序,選擇,迴圈 c語言表示真假 0為假,其他為真 迴圈if情況 wrong else懸空問題,else之和最近的未匹配的if匹配 wrong 乙個等號是賦值,兩個等號是判斷相等,建議常量放左邊5 num因為少打乙個 會報錯 判斷你輸入的乙個數是不是奇...

mysql5 7學習 mysql 5 7 學習

mysql uroot proot mysql5.7 mysql.user表沒有password欄位改 authentication string 一.建立使用者 命令 create user username host identified by password 例子 create user d...