C 在结构中使用结构
如何使用结构A修改结构B中的数据。结构B没有名称,只有类型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; } 提前谢谢 编辑:对不起,我只是想尽快发布这篇文章,这就是
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的扩展,但如果这是针对学校的,我强烈怀疑是打字错误。