共用体类型定义和使用
Posted LC编程开发者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了共用体类型定义和使用相关的知识,希望对你有一定的参考价值。
共用体类型的定义和使用与结构体差不多,例如,可以在定义共用体类型的时候,定义变量,如下:
union test
{
char a;
int b;
}x, y, z;
此时,定义了union test共用体类型,同时,定义了共用体类型变量x、y、z。很多时候,我们是把共用体类型的定义和变量定义分开,如下:
union test //定义共用体类型;
{
char a;
int b;
};
union test x, y, z; //定义共用体变量;
此时,我们先定义了共用体类型union test,然后,再使用共用体类型来定义变量x、y、z。
在定义结构体的时候,我们可以省略结构体类型的名称,例如:
struct
{
int i;
char j;
}a, b, c;
此时,定义了 struct 结构体类型,同时,定义了3个结构体变量。那么,由于定义结构体类型的时候,没有给出结构体类型的名称,所以,在代码中,不可以再定义该结构体类型的变量。
同样的道理,对于共用体来说,也可以这样定义,如下:
union
{
char a;
int b;
}x, y, z;
可以看到,在定义共用体的时候,就定义了共用体变量x、y、z;但是,没有给出共用体类型的名称,所以,就不可以再定义该共用体类型的变量。
共用体类型的定义与结构体类型的定义很相似,所以,使用共用体成员变量与结构体成员变量一样,例如:
union test
{
char a;
int b;
}x, y, z;
此时,引用共用体的成员变量如下:
x.a --- 引用共用体变量x的成员变量a;
x.b --- 引用共用体变量x的成员变量b;
z.b --- 引用共用体变量z的成员变量b;
同时,也可以定义共用体类型的指针变量,通过指针来引用成员变量。例如:
union test t;
union test* p; //定义共用体指针变量p;
p = &t; //指针p指向对象t;
p->a; //通过共用体指针变量p来引用其成员变量a;
如下是一个程序测试例子:
程序运行结果如下:
可以看到,定义了共用体类型union test,用它来定义了共用体类型变量t和共用类型指针变量p。指针变量p指向变量t。
然后,访问共用体的成员有:
t.a --- 通过共用体变量t,访问成员变量a;
p->a --- 通过共用体指针变量p,访问成员变量a;
可以看到,共用体类型的使用与结构体类型的使用很相似。
定义共用体类型变量的时候,可以对其进行初始化,例如:
union test
{
char a;
int b;
};
union test t = {9};
注意:共用体中的所有成员共同使用一块内存空间,所有,在给其成员进行初始化赋值的时候,只能够有一个数值,在初始化的参数列表中,参数列表只能够有一个数值。所以,有:
union test t = {9};
此时,把数值9存放到共用体变量t的共同使用内存块中。成员变量a和b都是使用该共用的内存空间。
韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip
以上是关于共用体类型定义和使用的主要内容,如果未能解决你的问题,请参考以下文章