结构是:
struct
{
int x;
struct
{
int y, z;
} nested;
}
i={.nested.y = 5, 6, .x = 1, 2};
问题:结果是i.nested.y = 2; i.nested.z = 6;
我无法理解或理解这一点,内在的也是一个结构但是联盟,所以任何人都可以帮助我吗?
答案 0 :(得分:0)
好的,首先让我说这是一种初始化结构的可怕方法,如果这是一个家庭作业问题 - 它也不是一个非常好的。
但是,考虑到手头的问题,我认为在初始化中发生的事情是这样的:首先,y被初始化为5,并且z,作为struct中的下一个成员,被初始化为6.然后,x被初始化为1并且结构中的下一个成员(在本例中为y)初始化为2(覆盖5)。
重要的是要注意的是,嵌套结构不是联合,而是结构 - 首先,因为这就是代码所说的,但也因为如果它是一个联合 - 它将是不可能的这种情况下y和z具有不同的值,因为两者都将保存在内存中的相同位置。