#include #includeintmain()
t1; t1.b=2
; printf(
"t1 value is %p\n
",t1);
printf(
"a value is %d\n
",t1.a);
printf(
"b value is %d\n
",t1.b);
printf(
"-------------\n");
printf(
"t1 address is %p\n
" , &t1);
printf(
"a address is %p\n
" , &t1.a);
printf(
"b address is %p\n
" , &t1.b);
return0;
}
t1 value is0x2a value is2
b value is2
-------------t1 address
is0x7ffff9a328e0
a address
is0x7ffff9a328e0
b address
is0x7ffff9a328e0
這裡只對聯合體的元素b進行賦值,沒有對a賦值,但由於聯合體的特性:當對某元素賦值後,其他元素將被重寫,所以 a的值也為2
&t1.a 與 &t1.b 相同,也證明了上面的結論
變數t1的記憶體位址 ,與&t1.a , &t1.b一樣,所以 t1等於 t1.a,也等於 t1.b
php中的zval的變數value就是乙個union,正好利用union的特性
typedef struct_zval_struct zval;
...struct
_zval_struct ;
typedef union _zvalue_value str;hashtable *ht; /*
hash table value
*/zend_object_value obj;
} zvalue_value;
通過 zval.value 便可以取出變數的值
聯合體詳解
在c c 程式的編寫中,當多個基本資料型別或復合資料結構要占用同一片記憶體時,我們要使用聯合體 當多種型別,多個物件,多個事物只取其一時 我們姑且通俗地稱其為 n 選1 我們也可以使用聯合體來發揮其長處。首先看一段 union型別是共享記憶體的,以size最大的結構作為自己的大小,這樣的話,myun...
關於聯合體
一 聯合體 聯合體的每個成員共享一塊記憶體,這塊記憶體的大小就是聯合體占用記憶體的大小。這塊記憶體至少有其中占用記憶體最大成員的大小,有時候大於是因為有時候要考慮記憶體對齊。二 聯合體的作用 1.可以判斷平台屬於大端儲存還是小端儲存 2.共享記憶體 程序間通訊 的時候可以使用 3.在通訊程式中,有時...
聯合體 位域結構體 聯合體的妙用
在c語言中,變數的定義是分配儲存空間的過程。一般的,每個變數都具有其獨有的儲存空間,那麼可不可以在同乙個記憶體空間中儲存不同的資料型別 不是同事儲存 呢?答案是可以的,使用聯合體就可以達到這樣的目的。聯合體也叫共用體,在c語言中定義聯合體的關鍵字是union。定義乙個聯合型別的一般形式為 union...