共用體裡巢狀結構體的問題

2021-08-21 21:13:10 字數 804 閱讀 2556

#include

typedef union

st;

}un;

int main()

1)注意聯合體的定義,就是組成聯合體的變數共用乙個空間。這個 例子中變數u和st共用乙個空間

2)現在用的pc機大多為小段結構,我的結果13也是在小段機測試的,如果架構改變,結果可能不同

3)基於小段結構,資料的低位元組儲存在記憶體的低位址中,st占用9位(bit),與變數u(32bit)共用低位的9位

4)根據小段結構,變數a的位址應該最低,往後依次是b,c,d

5)un.u = 0; 執行這一步,變數所對應的空間二進位制全部為0,即00000000 00000000 00000000 00000000

6)un.st.a = 1;執行這一步,變數最後一位變化,即00000000 00000000 00000000 00000001

7)un.st.b = 2;執行這一步,由於1位空間無法儲存2,所以賦值被截斷,原值不變

8)un.st.c = 3;執行這一步,變數第3-8位發生變化,變數值變為00000000 00000000 00000000 00001101

9)un.st.d = 4;執行這一步,由於1位空間無法儲存4,所以賦值被截斷,原值不變

10)所以最終的結果就是00000000 00000000 00000000 00001101

11)printf("%d\n", un.u); 輸出結果就是13

結構體巢狀結構體名

結構體巢狀結構體名 前一段時間在看ddk中例子的時候,看到這樣的的結構體定義 typedef struct common device data common device data,pcommon device data typedef struct pdo device data pdo dev...

結構體中巢狀結構體

結構體的巢狀問題 結構體的自引用 self reference 就是在結構體內部,包含指向自身型別結構體的指標。結構體的相互引用 mutual reference 就是說在多個結構體中,都包含指向其他結構體的指標。1.1不使用typedef時 錯誤的方式 struct tag 1 這種宣告是錯誤的,...

巢狀結構體案例

這個案例還是有很多地方可以學習的,決定記錄一下 參考 黑馬程式設計師匠心之作 c 教程從0到1入門程式設計 include include include include using namespace std 定義結構體 struct student struct teacher 賦值函式 voi...