如我之前的工作要求,我必须正确地完成两个功能:(a)部分涉及“枚举”,b部分涉及“结构”
现在它要我创建一个可以存储其中一个的联合 一种。 (a)部分的枚举 b。 (b)部分的结构 C。一个字符。
我很困惑。这是什么?
这里我要提到的是(a)部分和(b)部分的代码
a)
enum FavouriteFruits
{
Cherries=4,
Pears = 1,
Berries = 2,
Plums = 5
};
int main (int argc, char* argv[])
{
printf("Cherries are %d \n", Cherries);
printf("Pears are %d \n" , Pears);
printf("Berries are %d \n", Berries);
printf("Plums are %d \n", Plums);
return 0;
}
b)
struct realnumber
{
float array [2][3];
char* (*function)(int);
};
答案 0 :(得分:0)
联合是一种类型,它使用相同的内存来保存可以是几种不同类型之一的值。
union myUnion {
enum FavouriteFruits ff;
struct realnumber rn;
char c;
};
您现在可以声明此类型的变量:
union myUnion u;
并分配给任何成员,就像分配给struct成员一样。
u.c = 'a';
u.ff = Pears;
与struct
的区别在于它们都共享相同的内存。当您分配给u.ff
时,它将覆盖u.c
。因此,您只能从您最后一次分配给该成员的成员中读取信息。跟踪哪个成员是您的责任。请参见How can a mixed data type (int, float, char, etc) be stored in an array?,了解一种可以用于此目的的称为 tagged联合的技术。