gpt4 book ai didi

c - 使用带有指针的 typedef const 结构

转载 作者:行者123 更新时间:2023-11-30 16:25:38 24 4
gpt4 key购买 nike

好吧,我在尝试使用特定结构时遇到了一个重大问题。让我们从它开始:

typedef const struct x 
{
....
} *y;

然后我有另一个包含 y 的结构,如下所示:

struct Z
{
...
y someName;
};

现在我的主要问题是我无法弄清楚如何使用它来将某些内容分配给 someName。

如果我使用 x 并执行类似的操作

struct x anotherName =
{
assignedThing
};

尝试做类似的事情

Z.someName = anotherName; 

未能说明 anotherName 不能转换为 y 类型。

显然,我不能尝试通过创建 y 然后从 anotherName 分配特定部分来欺骗它,因为 y 是一个 const 结构,以后无法更改。

我也做不到

struct y anotherName

失败了,我做不到

y anotherName = 
{
};

因为它声称当原始结构有 14 个左右时,超过一个项目就太多而无法初始化。

坦白说,我在这里迷路了。无论如何,我是否可以实际创建 y 的定义实例或使用我当前定义的 x 实例?我是否遗漏了一些明显的东西(我觉得我是)?我无法重写任何原始结构或将其从 const 更改或删除它是指针的事实,因此这里的任何见解都将受到赞赏。

最佳答案

我认为这里的主要问题是您混淆了 struct xy 的类型。

struct x 是一个 struct,而 y 是一个指向 struct 的指针。

因此您不能分配 Z.someName = anotherName; 因为 anotherName 的类型为 struct x 而 someName 的类型为 y

你应该这样做

Z.someName = &anotherName

同样,您不能将结构体直接分配给指针类型变量

y anotherName = 
{
};

您创建一个struct x变量并将其地址分配给y类型的变量:

struct x someOtherName =
{
};
y anotherName = &someOtherName;

关于c - 使用带有指针的 typedef const 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53331637/

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