C 在结构中使用结构

C 在结构中使用结构,c,struct,nested,C,Struct,Nested,如何使用结构A修改结构B中的数据。结构B没有名称,只有类型 struct A { struct B; }; struct B { int data; }; 因为这是学校用的,我不能更改上面的代码。我只能用它。我在我的主菜上试过这样的东西,但不起作用 int main (){ struct A myStruct; myStruct.B.data = 3; return 0; } 提前谢谢 编辑:对不起,我只是想尽快发布这篇文章,这就是

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

struct A {
     struct B;
};

struct B {
     int data;
 };
因为这是学校用的,我不能更改上面的代码。我只能用它。我在我的主菜上试过这样的东西,但不起作用

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

编辑:对不起,我只是想尽快发布这篇文章,这就是为什么我没有用正确的c语法发布这篇文章。不管怎样,我的问题不够清楚是我的错

我知道我的main不起作用,我只是想知道是否有可能访问structb中的数据,而不需要像上面那样在structba中声明名称。这是一位老师给我的代码,所以我不想修改结构,因为我想也许她想让我们集思广益,想出一个方法,用她写的方式来使用它

iharob解释它的方式是在结构A之前声明结构B,并实际给结构B起一个名字,从而完美地工作


不给结构B命名就无法访问它内部的数据吗?

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

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

struct B 
{
    int data;
};

struct A 
{
    struct B member;
};

int main(void)
{
    struct A instance;
    instance.member.data = 3;
    return 0;
}
我假设您发布了一些示例代码,不要这样做。发布有问题的实际代码。您发布的代码完全无效,因为某些定义缺少类型,除非您使用
typedef
它,否则在中不使用
struct
就无法声明
struct
s。因此,请在下次发布实际代码


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

你从哪里知道
main()
definition。这个struct定义远不是有效的C。你确定这就是它的全部吗?@iharob可能是K&R,但这并不意味着它的使用更加有效。@PCLuddite这很糟糕,K&R也已经过时了。如果
struct B
是在
struct a
之前定义的,那么这将作为gcc和MSVC的扩展,但如果这是针对学校的,我强烈怀疑是打字错误。