C語言使用技巧(三) 位域在結構體中的使用

2021-10-09 13:59:10 字數 491 閱讀 9291

其他參考文獻:

完美解析c語言memcpy函式的用法

c 庫函式 calloc()

位域定義結構如下:

struct   位域結構名;
#pragma pack(push, 1)

typedef

struct st_test

st_test;

#pragma pack(pop)

#include

#include

intmain

(void

)

#include 

struct data_ data;

int main(

)

執行結果:

data 的占有的位元組數:3

位域位元組按8位為一位元組計算,所以2<(5+6+7)/8=18/8<3,位元組多餘2個只能將位元組按3位元組計算。

C語言結構體之位域

有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分為幾個不同的區域,並說明每個區域的位...

C語言結構體之位域

有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分為幾個不同的區域,並說明每個區域的位...

C 結構體中的位域

結構體的儲存方式存在記憶體對齊問題,在本文中不展開討論,本文主要想說明兩個問題,第乙個是位域的賦值問題 還有乙個就是資料的表達形式。好了,現在我們先討論一下位域的賦值問題 現假設有如下結構體 struct byte 首先我們知道,one和two儲存在同乙個位元組中,所以我們本能的以為語句 struc...