在下面的代码中:
union
{
float dollars;
int yens;
}price;
价格是匿名联盟的实例还是联盟本身的名称。它看起来像一个实例,但代码的作者说它是 工会的名称。
现在,第二个问题 - 假设这个联合是否嵌入在一个结构中 如下所示:
struct
{
char title[50];
char author[50];
union
{
float dollars;
int yens;
}price;
}book1;
访问 book1.dollars 是否有效?
答案 0 :(得分:2)
1)这是一个匿名联盟的实例,作者错了。如果您使用typedef
关键字(例如
typedef union
{
float dollars;
int yens;
} price;
,然后price
将是一个引用联盟的类型名称。
2)不,你要使用book1.price.dollars
。
<强>更新强> 联合类型可以通过以下方式声明:
union price
{
float dollars;
int yens;
}; // here you see, there is no instance.
如果右括号和分号之间有一个标识符,那就是实例的名称。