C++ - union

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;
    }