解释C语言中指向联合体的指针


联合体是内存中一个被多个不同数据类型变量共享的存储位置。

语法

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;
  • 声明联合体时,编译器会自动创建最大的变量类型大小来容纳联合体中的变量。

  • 任何时候只能引用一个变量。

  • 访问联合体成员使用与结构体相同的语法。

  • 点运算符用于访问成员。

  • 箭头运算符(->)用于使用指针访问成员。

我们有指向联合体的指针,可以使用箭头运算符(->)访问成员,就像结构体一样。

示例

下面的程序演示了在C编程中使用指向联合体的指针:

在线演示

#include <stdio.h>
union pointer {
   int num;
   char a;
};
int main(){
   union pointer p1;
   p1.num = 75;
   // p2 is a pointer to union p1
   union pointer* p2 = &p1;
   // Accessing union members using pointer
   printf("%d %c", p2->num, p2->a);
   return 0;
}

输出

执行上述程序时,会产生以下结果:

75 K

示例2

考虑使用不同输入的相同示例。

在线演示

#include <stdio.h>
union pointer {
   int num;
   char a;
};
int main(){
   union pointer p1;
   p1.num = 90;
   // p2 is a pointer to union p1
   union pointer* p2 = &p1;
   // Accessing union members using pointer
   printf("%d %c", p2->num, p2->a);
   return 0;
}

输出

执行上述程序时,会产生以下结果:

90 Z

更新于:2021年3月24日

4K+ 浏览量

开启你的职业生涯

完成课程获得认证

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