C語言之位段 節省空間 防備忘

2021-10-02 08:24:48 字數 592 閱讀 3888

在表示微控制器的控制位的某些時,有時乙個位元組佔用不完。只用到幾個位既可以表示。有時候,會用到位段這種資料結構;

(1)常規用法

typedef

struct student

stu;

intmain()

結果輸出為8。int d佔4個位元組。a/b/c佔6位,再位元組對其,一共佔4個位元組。故一共8個位元組。

(2)用長度為0的位段做間隔

typedef

struct student

stu;

intmain()

結果輸出為12。int d佔4個。unsigned :0;的作用是使下乙個位段從下乙個儲存單元開始。這樣的話,a佔1位,位元組對其,佔4個位元組;b/c佔5位,從下乙個儲存單元開始儲存,故也占用4個節。

(3)可定義無名位段,表示間隔幾位不用

typedef

struct student

stu;

這個意思就是,儲存a後的2位不儲存任何資料,即從第4位開始儲存b。

C語言之結構體基礎 防備忘

注 結構體位元組對其問題 1.結構體定義 typedef struct 結構體名 結構體替換名 結構體替換名 變數1,變數2 eg typedef struct student stu stu obj1,obj2 2.結構體巢狀 typedef struct 結構體名1 結構體替換名1 typede...

C語言之共用體基礎 防備忘

注 共用體變數所佔的記憶體長度等於最長的成員的長度 幾個成員變數共同占用同一段記憶體 共用體用來做什麼?微控制器中資料傳送的時候,占用同一片位址,進行資料傳送,十分方便 1.共用體定義 eg typedef union student stu 2.共用體巢狀結構體 eg typedef struct...

C語言之列舉型別基礎 防備忘

注 如果乙個變數,只能有幾種可能的值,則可以定義為列舉型別 1.列舉型別定義 enum weekday 型別定義 enum weekday total 定義列舉變數 如不指定 n內列舉元素的大小,則第乙個元素為0,之後元素自增1 即sun 0,tue 2.sat 6 total mon 即total...