联合(union)

联合(union)

 

1.联合说明和联合变量定义

联合也是一种新的数据类型,它是一种特殊形式的变量。

联合说明和联合变量定义与结构十分相似。其形式为:

union联合名{

数据类型成员名;

数据类型成员名;

...

}联合变量名;

联合表示几个变量公用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。

下例表示说明一个联合a_bc:

uniona_bc{

inti;

charmm;

};

再用已说明的联合可定义联合变量。

例如用上面说明的联合定义一个名为lgc的联合变量,可写成:

uniona_bc lgc;

在联合变量lgc中,整型量i和字符mm公用同一内存位置。

当一个联合被说明时,编译程序自动地产生一个变量,其长度为联合中最大的变量长度。

联合访问其成员的方法与结构相同。同样联合变量也可以定义成数组或指针,但定义为指针时,也要用"->"符

 

号,此时联合访问成员可表示成:

联合名->成员名

另外,联合既可以出现在结构内,它的成员也可以是结构。

例如:

struct{

intage;

char*addr;

union{

inti;

char*ch;

}x;

}y[10];

若要访问结构变量y[1]中联合x的成员i,可以写成:

y[1].x.i;

若要访问结构变量y[2]中联合x的字符串指针ch的第一个字符可写成:

*y[2].x.ch;

若写成"y[2].x.*ch;"是错误的。

posted on 2011-05-26 22:06  xuq  阅读(318)  评论(0)    收藏  举报

导航