Union的性质,与结构体的区别
共用体和结构体是两种定义类似但又有本质区别的构造类型,那么它们究竟有哪些区别呢?
1..共用体和结构体都是由多个不同的数据类型成员组成,但在任何同一时刻,共用体只存放了一个被选中的成员,而结构体的所有成员都存在。
2. 对于共用体的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构体的不同成员赋值是互不影响的。
3.结构体里可以含有union成员,union里也可以含结构体成员。
typedef struct _mystruct
{
int a;
char c;
}mystruct;
mystruct ms;
ms.a = 100;
ms.c = ‘a’;
typedef union _myunion
{
int a;
char c;
}myunion;
myunion mu;
mu.a = 100;
mu.c = ‘a’;
联合体里包含结构体:
typedef union _Demo
{
int a;
struct
{
int b;
char c;
}s;
float f;
}Demo;
Demo demo;
Demo.a
Demo.f;
Demo.s.b;
Demo.s.c;
联合体里包含结构体:
typedef union _LARGE_INTEGER {
struct {
ULONG LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER;
u和QuadPart共享了一段内存。
LARGE_INTEGER a;
a.QuadPart = 100i64;
a.u.LowPart = 100;
a.u.Highpart = 0;
//结构体中包含联合体例子:
typedef struct _demo
{
union
{
int a;
char b;
}c;
int d;
}demo;
demo dm;
dm.c.a = 10;
dm.c.b = ’a’;
dm.d = 20;