4452: 【例】联合体

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:13 解决:9

题目描述

在 C++ 中,union 是一种特殊的数据结构,它允许在相同的内存位置存储不同的数据类型。union 可以帮助节省内存,因为它们使用相同的内存空间来存储不同的数据类型,但是只能同时存储其中一个。

在定义 union 时,所有成员共享同一块内存空间。当为 union 的某个成员赋值时,会覆盖 union 中已有的值。这也是 union 的一个特点:它不会记录哪个成员是当前有效的,因此在使用 union 时,需要确保对应的成员是正确的。

样例输入 复制


样例输出 复制

联合体变量i的值:42
联合体变量d的值:3.14159
联合体变量c的值:A

提示

#include <iostream>
using namespace std;
/*
  定义union联合体,联合体内多个变量共享内存
  内存大小和占用空间最大的变量相同
  同一时刻只有一个变量的值是有效的 
*/ 
union MyUnion {
    int i;
    double d;
    char c;
};

int main() {
    MyUnion u;
    u.i = 42;//给联合体变量i赋值 
    cout << "联合体变量i的值:" << u.i << endl;//输出42,其他2个变量d和c无效 
    u.d = 3.14159;//给联合体变量d赋值
    cout << "联合体变量d的值:" << u.d << endl;//输出3.14159,其他2个变量i和c无效
    u.c = 'A';//给联合体变量d赋值
    cout << "联合体变量c的值:" << u.c << endl;//输出A,其他2个变量i和d无效
    return 0;
}