为什么联合会以这种方式使用?

lex*_*xer 3 c unions

联盟中的成员是否排他性是不是真的,如果你已经提到其中一个,你就不能参考另一个?

union Ptrlist
{
    Ptrlist *next;
    State *s;
};

void
patch(Ptrlist *l, State *s)
{
    Ptrlist *next;

    for(; l; l=next){
        next = l->next;
        l->s = s;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,上述所指的是两个nexts在同一时间,任何人都可以解释一下吗?

Pat*_* B. 5

联盟只定义了这一点

&l->next == &l->s 
Run Code Online (Sandbox Code Playgroud)

就这样.首次访问没有语言限制.