聯合體(union)定義
比如:typedef unionun;
實驗
#includeint main()
; union test union_test;
printf("a:0x%x,b:0x%x\n",union_test.a,&union_test.b);
printf("sizeof(union_test):%d\n",sizeof(union_test));
return 0;
}
執行結果
a:0xce5dadf0,b:0xce5dadf0
sizeof(union_test):12 //int b佔4位元組,以4位元組對齊,char a本身佔10位元組,那麼sizeof(union_test)=4*3.
從上面的實驗可以看處:
1.聯合體用法類似結構體。但是聯合體不會給每個成員分配空間,同一時間只能儲存其中乙個資料成員,所有資料成員具有相同的起始位址。
2.聯合體占用的記憶體大小,必須足夠容納最寬的成員,大小能被其包含的所有基本資料型別的大小所整除。
判斷系統大小端
#includeint main()
; union test union_test;
union_test.a = 1;
printf("union_test.b:%d \n",union_test.b);
return (1 == union_test.b); // union_test.b == 1成立則為小端,否則位大端。
}
利用union資料型別中所有資料成員具有相同的起始位址這一特性,可以判斷系統大小端。
當然某些系統可能同時支援大端和小端兩種儲存方式,可以用硬體跳線或者編譯選項中設定。
c語言 union聯合體
linux中聯合體union實現判斷little endian 和 big endian 大端和小端 1 聯合體的資料成員從低位元組開始對齊 2 little endian 和 big endian。little endian 和 big endian 是 cpu 存放資料的兩種不同順序。對於整型 ...
C語言之聯合體
聯合體,就是將幾種資料型別聯合起來的一種資料結構,但是它們共用乙個空間。怎麼理解呢?川劇變臉見過沒,就是來來回回的變來變去,給人看的眼花繚亂的,但是不管你怎麼變,面具下的臉卻始終不變。同樣的道理,各種資料型別就是各種臉譜,對外展現了不同的形象,唯一不變的就是它的記憶體空間的二進位制資料始終都是一樣的...
C語言聯合體union
c語言中的聯合體union 在c c 程式的編寫中,當多個基本資料型別或復合資料結構要占用同一片記憶體時,我們要使用聯合體 當多種型別,多個物件,多個事物只取其一時 我們姑且通俗地稱其為 n 選1 我們也 可以使用聯合體來發揮其長處。首先看一段 union myun u int k a int ma...