zoukankan      html  css  js  c++  java
  • C++ 共用体

    ——可用于存储多种数据类型数据,但只能同时存储其中一种的一个值

    union one4all
    {
        int int_val;
        long long_val;
        double double_val;
    };
    
    one4all pail;
    pail.int_val = 15;    // store an int
    cout << pail.int_val;
    pail.double_val = 1.38;    // store a double, int value is lost
    cout << pail.double_val;
    

      pail有时可以是int变量,有时可以是double变量...由于共用体每次只能存储一个值,因此共用体的长度为其最大成员的长度。

    用途:

    当数据项使用两种或更多种格式(但不会同时使用)时,可节省空间;它常用于操作系统数据结构或硬件数据结构。

    需要注意的是:程序员负责决定当前哪个成员是活动的,也就是说程序无法自己判断或使用当前共用体使用的成员

    匿名共用体:

    ——匿名共用体没有名称,其成员将成为位于相同地址处的变量。每次只有一个成员是当前的成员

    struct widget
    {
        char brand[20];
        int type;
        union
        {
            long id_num;    // anonumous union
            char id_char[20];    // other widgets
        };
    ...
    widget prize;
    ...
    if (prize.type == 1)
        cin >> prize.id_num;  // 使用变量id_num
    else
        cin >> prize.id_char;  // 使用变量id_char
    

      由于共用体是匿名的,因此id_num和id_char被视为prize的两个成员,它们的地址相同,所以不需要中间标识符id_val

  • 相关阅读:
    Nginx 配置指令的执行顺序(一)
    缘起 --转
    Nginx 变量漫谈(八)
    Nginx 变量漫谈(七)
    Nginx 变量漫谈(六)
    Windows批量添加防火墙例外端口
    Neo4j 的一些使用心得
    一文教你用 Neo4j 快速构建明星关系图谱
    GemFire 入门篇1:GemFire 是什么?
    数据结构(逻辑结构,物理结构,特点)
  • 原文地址:https://www.cnblogs.com/suui90/p/13048024.html
Copyright © 2011-2022 走看看