5.2.3 共用体变量的声明和初始化
在定义了一个共用体后,同样可以像声明一个int型变量一样声明一个共用体变量,形式如下所示。
union共用体名共用体变量;
其中,关键词union可以省略,如代码5.4中的“comUnion com1;”,这说明共用体定义了一个新类型。
在声明一个共用体的同时,可以完成其初始化,与结构变量的初始化不同的是,只能对共用体变量列表中的一个变量进行初始化,确切地说是对列表中的第一个变量进行初始化,对代码5.4中的comUnion共用体而言,下列语句是合法的。
comUnion com1={"Acer"};
但如果用“comUnion com1={7000};”对com1进行初始化,编译器则会给出警告。比较两种写法可以发现,初始化语句针对的是共用体列表中的第一个变量(字符数组brand)。
说明
更改共用体中变量列表的顺序,初始化的方式将有所不同。
与结构类似,可以把共用体定义、共用体变量声明及其初始化放在一起,如下所示。
union computer { char brand[20]; float price; }com1={"Dell"};C++允许使用匿名共用体,我们可以定义一个没有类型名称的共用体,方法是省略名称,但一定要在共用体定义的同时声明至少一个共用体变量,否则这种用法没有意义,如下所示。 union { char brand[20]; float price; }com1;
这样将创建一个名为com1的共用体变量,但这种类型没有名称,因此无法在以后的程序中声明这种类型的变量。