C语言union(联合体 共用体)
2015-05-15 10:26
309 查看
一直以来,union都是个很少用到的东西,对于这些不常用的结构往往记不住。这次看书又看到了,还是学习一下吧。
一般在Windows API的一些数据结构中才能看到这个union,其实并不复杂。本质上来说和结构体是一样的,但是从包装的角度来看有差异。
union中可以定义多个成员,union的大小由最大的成员的大小决定(是其整数倍,和struct相同)。
union成员共享同一块大小的内存,一次只能使用其中的一个成员。
对某一个成员赋值,会覆盖其他成员的值(也不奇怪,因为他们共享一块内存)
下面看一个简单的代码:
本文地址: 程序人生 >> C语言union(联合体
共用体)
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!
来源:http://www.programlife.net/union-struct-in-c.html
一般在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
相关文章推荐
- (转)C语言union(联合体 共用体)
- C语言union(联合体 共用体)
- C语言union(联合体 共用体)
- 【C/C++】C语言union(联合体 共用体)
- C语言union(联合体 共用体)
- C语言union(联合体 共用体)
- C语言union(联合体 共用体)
- C语言union(联合体 共用体)
- (转)C语言union(联合体 共用体)
- C语言union(联合体 共用体)
- (转)C语言union(联合体 共用体)
- C语言union(联合体 共用体)
- (转)C语言union(联合体 共用体)
- C语言union(联合体 共用体)
- union 共用体 联合体
- C语言中的联合体union
- 【C/C++】C语言中一些容易被人忽略的东西 之三 【共用体、联合、union】
- C语言联合体 union
- C语言中的union 共用体
- C语言共用体union和枚举类型enum