1、联合体Union和结构体Struct的比较:
联合体Union和结构体Struct均属于特殊的数据类型,都允许成员是不同类型的值。两者的区别在于结构体的各个成员会占用不同的内存,互相之间没有影响;而联合体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),联合体占用的内存等于最长的成员占用的内存。
2、联合体Union语法:
union tag //tag 即联合体名称
{
int member1;//联合体成员,成员之间用分号隔开
char member2;
double member3;
}[one or more union variables,一个或多个结构体变量,多个变量由逗号隔开];
3、联合体大小
前面说联合体所有成员占用同一段内存,修改一个会员会影响其他所有成员,且联合体占用内存是最长成员占用的内存。我们来打印出来验证:
#include<stdio.h>
#include<string.h>
union staff //union tag 联合体名称
{
//联合体成员
char name[10];