2015-10-17 93 views
-3

如何使用结构体A来修改结构体B中的数据。其中没有名称,只是一个类型。在结构体内使用结构体

struct A { 
    struct B; 
}; 

struct B { 
    int data; 
}; 

既然这是学校,我不能改变上面的代码。我只能使用它。我为我的主要尝试这样的东西,但它不起作用

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

在此先感谢。

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

我知道我的主不起作用我只是想知道是否有可能访问结构B中的数据,而无需在结构A中声明它的名称,如上所述。这是我由老师给出的代码,所以我不想修改结构,因为我想也许她想让我们以书面形式使用它的方式进行头脑风暴。

iharob解释它是由结构A之前宣布的struct B,居然让一个名字,以结构B.

是它根本不可能进入结构体B内部的数据没有给它起名字的作品完美的方式?

+0

你从哪里学到'main()'定义。 –

+2

该结构定义远不是有效的C.你确定这就是它的全部吗? – user3553031

+0

@iharob可能是K&R,但这并不会使它更有效。 –

回答

3

你发布的代码甚至不是c代码,它不会编译。

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

struct B 
{ 
    int data; 
} 

struct A 
{ 
    struct B member; 
} 

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

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

并且不要在struct的成员中构建如此复杂的struct s,除非您真的知道自己在做什么。