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

更新于:2021年3月24日

10K+ 浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.