第二十四周项目7-读懂“共同体”

运行下面的程序,并解释运行结果。
#include <iostream>
using namespace std;
union un
{
    int i;
    char c[4];
};
int main()
{
    union un x;
    x.c[0]='A';
    x.c[1]='B';
    x.c[2]='C';
    x.c[3]='D';
    cout<<x.i<<endl;
    return 0;
}


#include <iostream>
using namespace std;
union un
{
    int i;
    char c[4];
};
int main()
{
    un x;
    x.c[0]='A';
    x.c[1]='B';
    x.c[2]='C';
    x.c[3]='D';
    cout<<x.c[2]<<endl;
    return 0;
}

通过watch窗观察:

so:

结构体的引入,用户可以方便定义新的数据类型,用成员变量来存储事物不同方面的特性。但是结构体每一个成员变量均需要占用一定的存储空间,与实际的要求存在一定的差距。引入的新的自定义数据类型共用体(union),很像结构体类型,有自己的成员变量,但是所有的成员变量占用同一段内存空间。对于共用体变量,在某一时间点上,只能存储其某一成员的信息。
结构体是由不同数据类型组成的一个结构,存储空间是所有成员需要的空间的总和,结构成员是同时存在的。而共同体则是不同数据类型共享一个存储空间,空间的大小是能容纳共同体成员中的最大者。共同体成员的值不可能同时存在。

@ Mayuko

原文地址:https://www.cnblogs.com/mayuko/p/4567540.html