联合体
1.概念
联合体是同一内存空间存放不同类型数据的一种复合类型。不同类型数据称为联合体成员。
需要说明联合体类型中具体包含哪些类型,所以联合体类型也是自定义类型。
2.定义语法格式
union<联合体标签>{
成员类型 成员名;
成员类型 成员名;
… … ;
成员类型 成员名;
};
例如:
union A{
int x;
float y;
};
3.联合体变量的定义
1)常规定义方式
union A{
int x;
float y;
};
union A ua; //ua为联合体变量
union A ua1,ua2; //ua1,ua2为联合体变量
2)与类型同时定义方式
union A{
int x;
float y;
}ua1,ua2; //ua1,ua2为联合体变量
3)直接定义方式
union {
int x;
float y;
}ua1,ua2; //ua1,ua2为联合体变量
4.联合体变量的使用
//联合体变量不能初始化
//在同一时刻只用一个成员是可以用的
例如:定义一个联合体类型
union A{
int a;
double b;
char c[6];
};
int main(void)
{
union A ua;
ua.a = 100;
ua.b = 3.4;
strcpy(ua.c,"hello"); //ua.c有效
printf("%d %.2f %s\n",ua.a,ua.b,ua.c);
ua.a = 100;
strcpy(ua.c,"hello");
ua.b = 3.4;//ua.c有效
printf("%d %.2f %s\n",ua.a,ua.b,ua.c);
ua.b = 3.4;
strcpy(ua.c,"hello");
ua.a = 100;//ua.c有效
printf("%d %.2f %s\n",ua.a,ua.b,ua.c);
return 0;
}