好的,所以尝试使用特定结构时遇到了一个主要问题。 让我们开始吧:
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更改它,也不能删除其指针的事实,因此在这里的任何见识都将受到赞赏。
答案 0 :(得分:0)
我认为这里的主要问题是您混淆了struct x
和y
的类型。
struct x
是struct
,而y
是pointer to struct
。
因此您无法分配Z.someName = anotherName;
,因为anotherName
的类型为struct x
,someName的类型为y
。
您应该这样做
Z.someName = &anotherName
类似地,您不能直接将结构体分配给指针类型变量
y anotherName =
{
};
您创建一个struct x
变量,并将其地址分配给类型为y
的变量:
struct x someOtherName =
{
};
y anotherName = &someOtherName;