将typedef const结构与指针一起使用

时间:2018-11-16 04:50:59

标签: c pointers struct typedef

好的,所以尝试使用特定结构时遇到了一个主要问题。 让我们开始吧:

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更改它,也不能删除其指针的事实,因此在这里的任何见识都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

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

struct xstruct,而ypointer to struct

因此您无法分配Z.someName = anotherName;,因为anotherName的类型为struct x,someName的类型为y

您应该这样做

Z.someName = &anotherName

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

y anotherName = 
{
};

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

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