文章

C 共用体

C 共用体

概念

在C语言中,共用体(union)是一种特殊的数据类型,它允许多个成员共享同一块内存。

和结构体(struct)不同:

  • 结构体:每个成员都有独立的存储空间,大小是所有成员大小之和(加上对齐)。
  • 共用体:所有成员重叠存放,大小等于最大成员的大小,而且任意时刻只能保存其中一个成员的值。

基本语法

1
2
3
4
5
union Data {
    int i;
    float f;
    char str[20];
};

这里 Data 的大小是 max(sizeof(int), sizeof(float), sizeof(char[20])),也就是 20 个字节。

所有成员从同一个内存地址开始存放。

特点

  • 节省内存,所有成员共享同一片内存
  • 一个共用体在同一时间只能保存其中一个成员的值
  • 可以用来实现多态效果,比如一个变量有时存int,有时存float,就适用union

使用共用体可能会导致数据存在丢失或污染

本文由作者按照 CC BY 4.0 进行授权