C语言中的结构体联合体是什么?
联合体 (union) 是C语言中一个内存位置,由多个不同数据类型的变量共享。
语法
结构体联合体的语法如下:
union uniontag{
datatype member 1;
datatype member 2;
----
----
datatype member n;
};示例
以下示例演示了结构体联合体的用法:
union sample{
int a;
float b;
char c;
};联合体变量的声明
以下是联合体变量的声明,共有三种类型:
类型1
union sample{
int a;
float b;
char c;
}s;类型2
union{
int a;
float b;
char c;
}s;类型3
union sample{
int a;
float b;
char c;
};
union sample s;声明联合体时,编译器会自动创建最大的变量类型来容纳联合体中的变量。
任何时候,只能引用一个变量。
初始化和访问
访问联合体成员使用与结构体相同的语法。
点运算符用于访问成员。
箭头运算符 (->) 用于通过指针访问成员。
示例程序1
以下程序演示了结构体联合体的用法。
union sample{
int a;
float b;
char c;
}
main ( ){
union sample s = {10, 20.5, "A"};
printf("a=%d",s.a);
printf("b=%f",s.b);
printf("c=%c",s.c);
}输出
运行上述程序后,会产生以下结果:
a = garbage value b = garbage value c = A
结构体联合体
结构体可以嵌套在联合体中,这被称为结构体联合体。
可以在结构体内部创建联合体。
示例程序2
另一个C程序,演示了结构体联合体的用法,如下所示:
struct x{
int a;
float b;
};
union z{
struct x s;
};
main ( ){
union z u;
u.s.a = 10;
u.s.b = 30.5;
printf("a=%d", u.s.a);
printf("b=%f", u.s.b);
}输出
运行上述程序后,会产生以下结果:
a= 10 b = 30.5
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP