求解!跪求大神相助;

#include 
int main()
{  
    union
    { 
        int i[2];
        int k;
        int c;
    }t,*s = &t;
     
    s->i[0] = 10;
    s->i[1] = 20;
    s->k=30;
    printf("%d\n", s->k);    
    printf("%d\n", s->i[0]); 
    printf("%d\n", s->c);   
    return 0;
}
这个程序输出的值为什么都是三十?求大神指教。

联合体存储是共享的,所以看最后一个赋值怎么覆盖的内存。

1L解释完美,plus:一般项目使用较少

 int n = sizeof(t);    //内存是8,是以最大的变量为内存空间。。

  printf("%d\n", s->i[1]);   //这个值就是20