C語言關鍵字之聯合體

2021-09-23 18:52:20 字數 996 閱讀 6757

聯合體(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...