解释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;
声明union时,编译器会自动创建最大大小的变量类型来保存union中的变量。
在任何时候都只能引用一个变量。
相同的结构语法用于访问联合成员。
点运算符用于访问成员。
箭头运算符(->)用于使用指针访问成员。
我们有指向联合的指针,并且可以像结构一样使用箭头运算符(->)访问成员。
示例
以下程序显示了C编程中联合指针的用法-
#include输出结果union pointer { int num; char a; }; int main(){ union pointer p1; p1.num = 75; //p2是一个指向联合p1的指针 union pointer* p2 = &p1; //使用指针访问联合成员 printf("%d %c", p2->num, p2->a); return 0; }
执行上述程序时,会产生以下结果-
75 K
示例2
考虑具有不同输入的相同示例。
#include输出结果union pointer { int num; char a; }; int main(){ union pointer p1; p1.num = 90; //p2是一个指向联合p1的指针 union pointer* p2 = &p1; //使用指针访问联合成员 printf("%d %c", p2->num, p2->a); return 0; }
执行上述程序时,会产生以下结果-
90 Z