关于结构体长度的计算——环境DEV-c++5.1.1
来源:互联网 发布:网站域名注册证书查询 编辑:程序博客网 时间:2024/05/21 10:09
源码;
<span style="font-size:24px;">#include <stdio.h>struct stu{int a;float b;double c;char d;}a;union std{int a;float b;double c;char d;}b;void main(){printf("%d\n%d\n%d\n%d\n%d\n%d\n",sizeof(int),sizeof(float),sizeof(double),sizeof(char),sizeof(a),sizeof(b)); } </span>
运行结果:
可以看出;结构体stu的长度为24,然而,结构体成员的长度为:4+4+8+1=17,经百度查询,现将原因整理如下:
大概就是结构体的大小是其内部所有元素的类型长度最大的那个的整数倍;
字节对齐的细节和编译器实现相关,但一般而言,满足三个准则:
1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);
3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节(trailing padding)。
0 0
- 关于结构体长度的计算——环境DEV-c++5.1.1
- 结构体长度的计算
- c++中关于结构体长度的计算问题
- c语言中结构体长度的计算
- C语言计算结构体长度
- 结构体长度计算
- 结构体长度的计算超准确
- 一个结构体长度的问题
- 结构体长度
- 结构体长度问题
- sizeof空结构体长度
- 用对齐原则求结构体长度
- 字节对齐 空结构体长度
- malloc了多个结构体长度的内存后,怎样操作每个结构体
- C语言结构体属性的偏移量计算——关于offsetof函数的详解
- Java中发送结构体struct(xml字符串及包体长度) 到C/C++[正解]
- C++ 用对齐原则求结构体长度小结
- C#—dev VGridControl
- spring boot 测试 单元测试
- linux中不带缓存的I/O操作
- Ubuntu下各种格式的解压方法
- java集合框架的实现类的一些示例demo
- 静态成员变量
- 关于结构体长度的计算——环境DEV-c++5.1.1
- EOJ1854 Broken Necklace 枚举
- 为了版号:游戏和谐 之路
- scala高阶函数
- Java中“==”与equals()的区别
- win7下vs2015配置MS-MPICH
- 1619-7 张良 十月十七号总结 [连续第十七天]
- HDU 2087 剪花布条【KMP,子串出现次数,不可重叠】
- JQuery Validate,验证也可以很简单