#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