联合union与结构非常的类似,也是自定义类型。结构是将简单类型组成一起,联合union是也是将简单类型组在一起,但它占的内存是共用的。画个图应该会明白点。
1 2 |
struct S{double x, double y}; unio U{double x, double y}; |
联合union它定义,访问都可以比对结构struct部份。这里就不过多的在描述。
哪联合具体有什么用呢?这个是大家都比较关心的事情。
输出ascii,比如定义Acsii这样就可以实现码值与字符对应,不用当心给错值。
1 2 3 4 5 |
union Acsii { char c; short i; }; |
1 2 3 4 5 6 |
Acsii Am; Am.i = 65; cout<< Am.c <<endl; Am.c = 'C'; cout<< Am.i <<endl; |
具体代码:联合union具体运用
还可以用在数据共享上,比如有4个人可以修改一个数据,只要其中一个人修改了数据,修改完后其它人再读数据就是新的。
1 2 3 4 5 6 7 |
union Shar { int a; int b; int c; int d; }; |
还可以用在不同类型如何放在同一链表list里,设计如下
1 2 3 4 5 6 7 8 9 10 11 |
union U { int* ip; char* cp; }; struct SDiffType { int flag; //用于判断u里面是char*还是Int* U u; }; |
联合还有很多运用,很多变化。只要记住一点就好,联合union是共用一块内存。这点记住了,不管再怎么运用变化,都能很快想明白。