开发者社区 问答 正文

什么是联合体(union)?有没有语法示例?

什么是联合体(union)?有没有语法示例?

展开
收起
三分钟热度的鱼 2024-05-17 13:43:38 50 分享 版权
1 条回答
写回答
取消 提交回答
  • 联合体允许在相同的内存位置存储不同类型的数据,但在同一时间只能使用其中一种类型的数据。
    语法示例:

    // 联合体的定义union Data {    int intValue;    float floatValue;    char charValue;}
    // 联合体一次只能保存一种类型的数据,每次赋值都会覆盖内存中之前的值// 因此联合体一般是配合结构体来使用,下面是一个示例
    // 定义数据类型的枚举enum DataType {    INT,    FLOAT,    CHAR};
    // 定义一个结构体,它包含一个联合体和一个枚举标签struct SafeUnion {    // 标记当前联合体中存储的数据类型    DataType type;        // 定义联合体    union {        int intValue;        float floatValue;        char charValue;    } data;};
    // 赋值操作SafeUnion su;su.type = FLOAT;su.data.floatValue = 1.0f;
    // 使用时,通过type判断类型然后访问联合体对应的成员变量switch(su.type) {    case FLOAT:        cout << su.data.floatValue << endl;        break;    }
    
    2024-05-17 14:24:11
    赞同 展开评论
问答地址: