您的位置:首页 > 编程语言 > C语言/C++

结构和联合的区别

2015-07-27 18:58 274 查看
来自:http://blog.chinaunix.net/uid-25132162-id-1565162.html
1、结构体的定义
   struct 结构体名
   {
       数据类型1 成员名1;
       数据类型2 成员名2;
       ......
   };
2、联合体的定义
   union 联合体名
   {
       数据类型1 成员名1;
       数据类型2 成员名2;
   };
3、两者之间的区别:
 (1)在同一时刻,结构体的每个成员都有值,但是联合体在同一时刻只有一个成员有值(或理解为结构体的sizeof是所有成员的和,而联合体的sizeof等于其最长的成员的sizeof);
 (2)当对结构体变量的其中一个成员进行修改时,对其他成员没有影响,但是修改联合体时,则会将原来的成员值覆盖。
例子:关于修改联合体的成员的值

#include <iostream>

using namespace std;

int main() 



    union test

    {

        int i;

        struct 

        {

            char first;

            char second;

        }half;

    }number;

    number.i = 0x4241;

    cout<<number.half.first<<"
"<<number.half.second<<endl;

    number.half.first = 'a';

    number.half.second = 'b';

    printf("%x\n", number.i);

    return 0; 

}

输出结果为:

A B

6261
例二:

#include <iostream>

using namespace std;

int main() 



    union test

    {

        int i;

        struct 

        {

            char first;

            char second;

        }half;

    }number;

    number.i = 0x654241;  //注意与前面例子的区别

    cout<<number.half.first<<"
"<<number.half.second<<endl;

    number.half.first = 'a';

    number.half.second = 'b';

    printf("%x\n", number.i);

    return 0; 

}

输出结果为:

A B

656261

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++