C++ - union

  1. 简介

C++ 学习笔记

C++ union

简介

  • 联合体
  • union 中所有的变量公用一个内存地址
  • 如果一个 union 中有五个 int 变量:a,b,c,d,e ,当我设置a为2时,所有的变量都是2
  • union 不可以有方法
  • 可以理解成 : 使用union是为了用不同的名称去访问同一个内存地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>

struct Union
{
union
{
float a;
int b;
};
};

int main()
{
Union u;
u.a = 3.4f;
std:: cout << u.a << "," << u.b << std::endl;
}
  • 进阶一点的demo
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include <iostream>

    struct vector2
    {
    float x, y;
    };

    struct vector4
    {
    union
    {
    struct
    {
    float x, y, z, w;
    };
    struct
    {
    // a 和 (x, y)公用内存
    // b 和 (z, w)公用内存
    vector2 a, b;
    };
    };
    };

    void PrintVector2(const vector2& v)
    {
    std::cout << v.x << "," << v.y << std::endl;
    }

    int main()
    {
    vector4 v = {1.1f, 1.2f, 1.3f, 1.4f };
    PrintVector2(v.a);
    PrintVector2(v.b);

    return 0;
    }

欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qinhan_shu@163.com

文章标题:C++ - union

本文作者:QinHan

发布时间:2020-01-11, 18:47:58

最后更新:2020-02-20, 05:42:12

原始链接:https://qinhan.site/2020/01/11/cpp-unions/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏