【C语言】联合体-共用体 (union) 详解-阿里云开发者社区 (aliyun.com)
联合
在C语言中是一种数据类型,能在同一个内存空间中存储不同的数据类型(不是同时储存)。
典型用法:设计一种表以存储及无规律、实现也不知道顺序的混合类型。
使用联合类型的数组,其中的联合都大小相等,每个联合可以存储各种数据类型。
#include <stdio.h>
#include <string.h>
union Un
{
int i;
double c;
};
union Un un;
int main()
{
printf("打印联合体中变量的地址\n");
printf("&(un.i):%p\n", &(un.i));
printf("&(un.c):%p\n", &(un.c));
printf("地址相同,代表联合体中的变量公用一块内存地址\n\n");
printf("将un.i的值赋值为5 ");
un.i = 5;
printf("un.i的值%d\n", un.i);
printf("将un.c的值赋值为3.14 ");
un.c = 3.14;
printf("un.i的值%d\n", un.i);
printf("un.i的值%f\n", un.i);
printf("un.c的值%f\n", un.c);
printf("从上面结果我们观察到同一时刻,只能存在一个联合体变量起作用,每次赋值都会进行覆盖\n");
return 0;
}
这次采用在代码结果里加入注释来进行讲解,希望会更加直观。
联合的成员是遵循字节对齐,共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员)。