gpt4 book ai didi

c - union 存储程序的前一部分

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:23 25 4
gpt4 key购买 nike

正如我之前在作业中所问的那样,我必须正确地处理两个函数,部分 (a) 是关于“枚举”的,部分 b 是关于“结构”的

现在它要求我创建一个可以存储任何一个的 union A。 part(a) 中的枚举b. part(b) 中的结构C。单个字符。

我很困惑..这个“要么”是什么?

这里我提到部分(a)和部分(b)的代码

一)

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;
}

二)

struct realnumber
{
float array [2][3];
char* (*function)(int);
};

最佳答案

union 是一种类型,它使用相同的内存来保存可以是多种不同类型之一的值。

union myUnion {
enum FavouriteFruits ff;
struct realnumber rn;
char c;
};

您现在可以声明这种类型的变量:

union myUnion u;

并分配给任何成员,就像分配给结构成员一样。

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?一种称为标记 union 的技术可用于此目的。

关于c - union 存储程序的前一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55662044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com