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;

uQuadPart共享了一段内存。

 

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;

周哥教IT,分享编程知识,提高编程技能,程序员的充电站。跟着周哥一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

当你决定关注「周哥教IT」,你已然超越了90%的程序员!

IT黄埔-周哥教IT技术交流QQ群:213774841,期待您的加入!

二维码
微信扫描二维码关注