共用体类型定义和使用

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

以上是关于共用体类型定义和使用的主要内容,如果未能解决你的问题,请参考以下文章

若已定义了如下的共用体类型变量x,则x所占用的内存字节数为()

C 共用体

共用体与枚举

C零基础视频-42-共用体

共用体(union)

C语言基础:共用体