聯合體名字的含意

2022-03-10 22:53:25 字數 1225 閱讀 1792

#include #include 

intmain()

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  is

0x2a 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...