Union联合体

组别:普及组
难度系数:3

1、共享内存
也就是共享起始 地址。union变量中,可以包含union中的任何一个成员,但同一时间只能存储其中一 种类型的变量。该union变量的起始地址是固定的。
2、取最大成员的空间
既然union变量可以包含union中的任何一个成员,所以分配的空间必须确保能放得下最大的变量,这一点也比较容易理解。
3、成员类不可以有构造函数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
 struct times{
      char c;
      float n;
     int h;
    };
    
 union day{
         int m;
         char t;
         float o;
 };
 
 int main(){
     times sum;
     day  days;
    cout<< sizeof(sum)<<endl;
    cout<< sizeof(days)<<endl;
    days.m=10;
    days.t='t';
    days.o=2.4;
    cout<<days.o;
     }

edit & run

结构体在内存中会有内存对齐的概念

Scroll to Top