sizeof(struct)和sizeof(union)
来源:互联网 发布:versions for mac 1.4 编辑:程序博客网 时间:2024/05/16 06:34
一、union共用体(联合)
共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。当一个共用体被声明时, 编译程序自动地产生一个变量, 其长度为联合中元类型(如数组,取其类型的数据长度)最大的变量长度的整数倍,且要大于等于其最大成员所占的存储空间。
- union foo
- {
- char s[10];
- int i;
- }
在这个union中,foo的内存空间的长度为12,是int型的3倍,而并不是数组的长度10。若把int改为double,则foo的内存空间为16,是double型的两倍。
- union mm{
- char a;//元长度1 1
- int b[5];//元长度4 20
- double c;//元长度8 8
- int d[3]; 12
- };
当在共用体中包含结构体时,如下:
- struct inner
- {
- char c1;
- double d;
- char c2;
- };
- union data4
- {
- struct inner t1;
- int i;
- char c;
- };
当在结构体中包含共用体时,共用体在结构体里的对齐地址为共用体本身内部所对齐位数,如下:
- typedef union{
- long i;
- int k[5];
- char c;
- }DATE;
- struct data{
- int cat;
- char cc;
- DATE cow;
- char a[6];
- };
sizeof(DATE)=20, 而在结构体中中是4+1+3(补齐4对齐)+20+6+2(补齐4对齐)=36;
1. 共用体和结构体都是由多个不同的数据类型成员组成, 但在任何同一时刻, 共用体只存放了一个被选中的成员, 而结构体的所有成员都存在。
2. 对于共用体的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构体的不同成员赋值是互不影响的。
0 0
- sizeof(struct)和sizeof(union)
- sizeof union和struct
- sizeof(struct)与sizeof(union)
- sizeof struct&union
- union, struct , sizeof. 对齐
- union 和struct的sizeof问题
- Struct和Union的sizeof计算
- struct union数据对齐和sizeof大小
- C当中关于sizeof(struct)和sizeof(union)
- C语言中的sizeof(struct )和sizeof(union)
- sizeof(union) 、sizeof(struct) 和内存对齐技术
- C当中关于sizeof(struct)和sizeof(union)
- C当中关于sizeof(struct)和sizeof(union)
- C当中关于sizeof(struct)和sizeof(union)
- 神秘的 sizeof(union) 、sizeof(struct) 和内存对齐技术
- c语言中sizeof struct和sizeof union
- 神秘的 sizeof(union) 、sizeof(struct) 和内存对齐技术
- C当中关于sizeof(struct)和sizeof(union)计算
- 学习Javascript的8张思维导图 (4)
- 各种提示信息
- 国达色谱色谱仪器 脆碎度测试仪
- TortoiseSVN设置忽略文件和目录文件夹
- MySQL里获取当前week、month、quarter的第一天/最后一天
- sizeof(struct)和sizeof(union)
- 程序员护颈三宝
- cocos2d-x读取json
- 在mysql数据库中,统计当天的日志
- 电视盒子开机自启动wifi热点功能代码,貌似路由器都能省了。。。
- unity插件和工具
- 金融交易知识
- 大揭秘:女性不爱编程的缘由
- 第九周项目六:穷举法解决组合问题