在struct中使用struct

时间:2015-10-17 22:38:06

标签: c struct nested

如何使用struct A修改结构B中的数据。它没有名称,只有一个类型。

struct A {
     struct B;
};

struct B {
     int data;
 };

由于这是针对学校的,我无法更改上述代码。我只能使用它。我为我的主要尝试了类似的东西,但它没有工作

int main (){
      struct A myStruct;
      myStruct.B.data = 3;
      return 0;
}

提前致谢。

编辑:对不起,我只是想尽可能快地发布这个,这就是为什么我没有用适当的c语法发布这个。无论如何,我的错是在我的问题上不够清楚。

我知道我的主要功能不起作用我只是想知道它是否有可能访问struct B中的数据而不在struct A中声明它的名称,因为我有以上。这是我由老师给出的代码,所以我不想修改结构,因为我想也许她希望我们以她编写的方式集体讨论使用它的方式。

iharob解释它的方式完全可以通过在结构A之前声明结构B,并实际给结构B命名。

是否根本无法在不给它命名的情况下访问struct B中的数据?

1 个答案:

答案 0 :(得分:4)

您发布的代码甚至不是c代码,也不会编译。

您的主要错误是您不需要使用struct名称来访问该成员。这应该是好的

struct B 
{
    int data;
};

struct A 
{
    struct B member;
};

int main(void)
{
    struct A instance;
    instance.member.data = 3;
    return 0;
}

我假设你发布了一些示例代码,不要这样做。发布有问题的实际代码。您发布的代码完全无效,因为其中一个定义缺少类型,除非您struct,否则无法在中使用struct来声明typedef它。所以请在下次发布实际代码。

除非你真的知道自己在做什么,否则不要与struct成员建立如此复杂的struct