您的位置:首页 > 编程语言 > C语言/C++

C语言union(联合体 共用体)

2015-05-15 10:26 309 查看
一直以来,union都是个很少用到的东西,对于这些不常用的结构往往记不住。这次看书又看到了,还是学习一下吧。

一般在Windows API的一些数据结构中才能看到这个union,其实并不复杂。本质上来说和结构体是一样的,但是从包装的角度来看有差异。

union中可以定义多个成员,union的大小由最大的成员的大小决定(是其整数倍,和struct相同)。

union成员共享同一块大小的内存,一次只能使用其中的一个成员。

对某一个成员赋值,会覆盖其他成员的值(也不奇怪,因为他们共享一块内存)

下面看一个简单的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#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("size: %d\n", sizeof(d));
printf("%c\t%d\t%d\n", d.c, d.a, d.b);

return 0;
}





本文地址: 程序人生 >> C语言union(联合体
共用体)

作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!

来源:http://www.programlife.net/union-struct-in-c.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: