2012-03-20 37 views
0

的结构是:我不理解这个嵌套结构

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

可能重复[C结构初始化](http://stackoverflow.com/questions/17464822/c-structure-initialization) – alk 2013-07-04 09:19:59

回答

0

好吧,首先让我说,这是一个可怕的方式来初始化一个结构,如果这是一个家庭作业的问题 - 它也不是一个很好的。然而,考虑到手头的问题,我认为在初始化过程中发生了这样的事情:首先,y被初始化为5,并且作为结构中下一个成员的z被初始化为6.然后,x被初始化为1,并且结构中的下一个成员(在本例中为y)初始化为2(即覆盖5)。

重要的是要注意,嵌套结构不是联合体,而是结构 - 首先,因为这就是代码所说的,但也因为如果它是一个联合 - 这是不可能的在这种情况下,y和z具有不同的值,因为两者都将保存在内存中的相同位置。

+0

是的,你是对的,我明白了,Thx。 – kevinwei 2012-04-15 11:20:32