联合
联合是一种特殊的数据类型,它允许在同一内存位置存储不同类型的数据。联合的所有成员共享同一块内存空间,这意味着在任何给定时刻,联合体只能包含一个成员的值。
#include <stdio.h>
#include <string.h>
union data
{
int i;
float f;
char s[20];
};
int main(int argc, char const *argv[])
{
union data u;
u.i = 233;
printf("%d\n", u.i);
u.f = 6.66;
printf("%d\n", u.i);
printf("%f\n", u.f);
strcpy(u.s, "Hello World!");
printf("%d\n", u.i);
printf("%f\n", u.f);
printf("%s\n", u.s);
return 0;
}
联合默认用其第一个成员类型的值进行初始化,或者使用指定初始化器来初始化特定的成员。
#include <stdio.h>
union data
{
int i;
float f;
char s[20];
};
int main(int argc, char const *argv[])
{
union data u1 = {233};
printf("%d\n", u1.i);
printf("%f\n", u1.f);
printf("%s\n", u1.s);
union data u2 = {.f = 6.66};
printf("%d\n", u2.i);
printf("%f\n", u2.f);
printf("%s\n", u2.s);
union data u3 = {.s = "Hello World!"};
printf("%d\n", u3.i);
printf("%f\n", u3.f);
printf("%s\n", u3.s);
return 0;
}