C++ 入门4 共用体

=========C++ 入门4 ---- 共用体========

  共用体(union)是一种数据格式,它能存储不同的数据类型,但是只能一次使用其中一种数据类型。由于共用体每次只能存储一个值。因此它必须有足够大的空间来存储最大的成员,所以,共用体的长度为其最大成员的长度。

  共用体经常被用在,当数据项使用两种或者更多的格式(但不会同时使用)时,可以节省空间。比如,假设管理一个小商品目录,其中一些商品的ID为整数,而另一些的ID为字符串。这种情况下,可以这样做:

#include <iostream>

struct widge 
{
    char brand[20];
    
    int type;
    union ID
    {
        long id_num;
        char id_char[];
    } id_val;
};

int main()
{
    widge prize;
    
    std::cin >> prize.type;
    
    if(prize.type == 1){
        std::cin >> prize.id_val.id_num;//输入整形数字作为ID
    } else {
        std::cin >> prize.id_val.id_char;//输入字符串作为ID 
    } 
    
    if(prize.type == 1){
        std::cout << prize.id_val.id_num << std::endl;//输出整形ID 
    } else {
        std::cout << prize.id_val.id_char << std::endl;//输出字符串ID 
    } 
    
    return 0;
}
原文地址:https://www.cnblogs.com/CocoonFan/p/2973279.html