gpt4 book ai didi

c - 结构/union 初始化困惑

转载 作者:太空狗 更新时间:2023-10-29 16:13:13 25 4
gpt4 key购买 nike

我目前正在为下周一的考试做练习考试,我遇到了一些让我困惑的事情!

我有以下结构:

struct shape2d {
float x;
float y;
};

struct shape3d {
struct shape2d base;
float z;
};

struct shape {
int dimensions;
char *name;
union {
struct shape2d s1;
struct shape3d s2;
} description;
};

typedef struct shape Shape;

我必须创建一个函数来“创建”具有以下签名的形状:

Shape *createShape3D(float x, float y, float z, char *name);

因为我正在处理结构的 union ,所以我不太确定如何初始化我需要的所有字段!

这是我目前所拥有的:

Shape *createShape3D(float x, float y, float z, char *name) {
Shape *s = (Shape *) malloc(sizeof(Shape));
s->dimensions = 3;
s->name = "Name...";

// How can I initialize s2?

return s;
}

我们将不胜感激!

最佳答案

首先你需要将 name strcpy 到 s->name。

strcpy(s->name, "Name ...");

您可以将 s2 初始化为

s->description.s2.z = 0;
s->description.s2.base.x = 0;
s->description.s2.base.y = 0;

您可以在一本书中阅读更多关于 union 的内容。你也可以看这里

http://c-faq.com/struct/union.html

http://c-faq.com/struct/initunion.html

http://c-faq.com/struct/taggedunion.html

关于c - 结构/union 初始化困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170162/

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