共用体

一、共用体定义方法

1、直接定义

(1)为了以后定义,这里只是声明

 

union DEMO{
	char c;
	int a;
	int b;
};


(2)既声明了,也定义了,以后也可定义

 

 

union DEMO{
	char c;
	int a;
	int b;
}d;

(3)只定义一次,以后不需要定义了

 

 

union {
	char c;
	int a;
	int b;
}d;


2、使用typedef

 

(1)

 

typedef union DEMO{
	char c;
	int a;
	int b;
}TEST;


(2)去掉DEMO

 

 

typedef union{
	char c;
	int a;
	int b;
}TEST;


二、使用共用体

 

1、赋值:

       必须先初始化再赋值

 

TEST e;
e.c  = 'H';
或者(&e)->c = 'H';
或者*(&e).c = 'H';

 

 

2、引用:

    e.c     (&e)->c  *(&e).c


三、一旦重新赋值,那么原来的值就都没了,但如果有数组情况不一样

1、代码如下:

 

#include <stdio.h>
union hf {
        char c;
        int a[4];
        int b;
};

int main(int argc, char **argv)
{
        union hf  d;
        (&d)->c = 'H';
        d.a[0] = 1<<8;
        d.a[3] = 1;
        printf("%d\t%d\t%d\n", d.c,d.a[3], d.b);
        return 0;
}


2、结果如下:

 

      0      1       256

      c a[0] b 的数据相互覆盖,a[1] a[2] a[3] 与这些无关      



 

posted on 2013-12-11 11:51  我的小人生  阅读(191)  评论(0编辑  收藏  举报