//在32位x86系統下
int main()
*s,a;
s = &a;
s->i[0] = 0x39;
s->i[1] = 0x38;
printf("%d",a.k);
//輸出結果為3839
return 0;
}
運用知識:聯合,大端小端,資料在記憶體中的儲存方式
聯合:多個變數共享一段記憶體,分配記憶體時以占用記憶體最大的變數分配記憶體
c語言中,預設是小端。
x86是小端模式。
下面以unsigned int value = 0x12345678為例,分別看看在兩種位元組序下其儲存情況,我們可以用unsigned char buf[4]來表示value
高位址 ---------------
buf[3] (0x78) -- 低位
buf[2] (0x56)
buf[1] (0x34)
buf[0] (0x12) -- 高位
---------------
低位址高位址 ---------------
buf[3] (0x12) -- 高位
buf[2] (0x34)
buf[1] (0x56)
buf[0] (0x78) -- 低位
--------------
低位址
高位址
------------
0x00 --高位
0x00
i[1] 0x38
i[0] 0x39 --低位
------------
低位址
所以最後輸出為 00003839;
歡迎指正!
C語言聯合
聯合使用關鍵字union,表示的一種量,只占用一塊記憶體,具體如何占用取決於型別最大的那個。比如int和float會選用float。聯合也可以和結構體結合起來用,也可以賦值,通過.屬性名的方式指定初始化器,對指定物件賦值,其他的不變。includetypedef union quantity typ...
C語言 列舉,聯合
7 列舉可以用來建立新的型別 8 列舉型別儲存區就是整數型別儲存區,列舉型別儲存區應該只能放有限的幾個整數 9 列舉型別也需要先宣告後定義,宣告使用enum關鍵字 10 宣告列舉型別的時候需要提供一組名稱,計算機為每個名稱分配乙個對應的整數,列舉型別只能存放這些整數 11 不同列舉型別所能記錄的整數...
C語言 聯合(union)
聯合 union 是一種資料型別,他能在同一塊空間中儲存不同資料型別,但不是同時儲存。如果我們想設計一種結構,其能儲存一些既無規律,也無順序的資料,那麼就可以用到聯合。建立聯合和建立結構體相同,需要宣告乙個模板,再用這個模板建立變數,下面給出例子 union stu 根據上面宣告,該結構可以儲存乙個...