union

union跟结构体类似,但是union是所有成员占据同一段内存地址。

1、union中可以定义多个成员,union的大小由最大的成员的大小决定。
2、union成员共享同一块大小的内存,一次只能使用其中的一个成员。
3、对某一个成员赋值,会覆盖其他成员的值(也不奇怪,因为他们共享一块内存。
    但前提是成员所占字节数相同,当成员所占字节数不同时只会覆盖相应字节上的值,比如对char成员赋值就不会把整个int成员覆盖掉,因为char只占一个字节,而int占四个字节)
4、联合体union的存放顺序是所有成员都从低地址开始存放的。

#include <stdio.h>
 
typedef union{
 char c;
 int a;
 int b;
} Demo;
 
int main(int argc, char **argv)
{
 Demo d;
 d.c = 'H';
 d.a = 10;
 d.b = 12;
 
 printf("Demo size: %d\n", sizeof(Demo));
 printf("int size: %d\n", sizeof(int));

 printf("c:%c\n", d.c);
 printf("a:%d\n", d.a);
 printf("b:%d\n", d.b);
 
 return 0;
} 
Demo size: 4
int size: 4
c:    // 这里是个特殊符号
a:12
b:12
posted @ 2015-04-30 16:22  牧 天  阅读(1084)  评论(0)    收藏  举报