解析C语言结构体,位段
来源:互联网 发布:淘宝床上用品床罩 编辑:程序博客网 时间:2024/05/18 20:10
1.结构体的定义
将不同类型的数据组合成一个有机的整体,这些整合在一个整体中的数据是互相联系的,它们组织成一个组合项,在一个组合项中包含若干个类型不同(也可以相同)的数据项,C语言 中允许用户自己指定这样一种数据类型,它称为结构体。
2.结构的初始化
结构的初始化与数组的初始化很相似。一个位于一对花括号内部、由逗号分隔的初始值列表可用于结构各个成员的初始化。这些值根据结构成员列表的顺序写出。如果初始列表的值不够,剩余的结构成员将使用缺省值进行初始化。例:
3.结构体的typedef
使用关键字typedef可以对结构体类型声明一个新的名字,例:
4.结构体的内存存储
下面来解释为何是24,首先来了解内存对齐规则:
(1)结构的第一个成员永远都放在0偏移处;
(2)从第二个成员开始,都要对齐到对齐数的整数倍处;
对其数:结构成员自身大小和编译器默认对齐数的较小值;
默认对齐数:vs-8,linux-4;
(3)结构体的总大小必须是最大对齐数的整数倍;
(4)如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数的整数倍
存在内存对齐的原因:
(1)平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。
(2)性能原因:数据结构(尤其是栈)应该尽可能地在自认边界上对齐。原因在于:为了访问未对齐的内存,处理器需要做两次内存访问,而对齐的内存访问仅需要一次访问。
5.位段
位段成员必须声明为int,signed int或unsigned int,在成员名的后面是一个冒号和一个整数,这个整数指定该位段所占用的位的个数。例:
存储方式为:第二个位段无法放在第一个位段剩余的位上时,编译器会把第二个位段放在内存的下一个字节上,在VC 中位段存储单元的大小是4字节。位段不能跨平台使用。
- 解析C语言结构体,位段
- 解析C语言结构体,位段。
- 解析C语言结构体,位段
- 解析C语言结构体、位段
- 解析C语言结构体,位段
- 解析C语言结构体,位段
- 解析c语言结构体和位段
- 解析C语言结构体及位段
- C语言结构体,位段
- C语言结构体与位段
- C语言用结构体实现位段
- 浅析C语言结构体及位段
- C语言中用结构实现位段
- c语言的位和位段结构的运算
- 解析结构体和位段
- C语言 中结构体的位域(位段)
- 位段【C语言】
- 位段 C语言
- 机器学习——EM算法 知识点与面试总结
- 文章标题
- Java 8系列之Stream的强大工具Collector
- luceneday-02
- 【Mongo】集群测试(容灾+查询+并发)
- 解析C语言结构体,位段
- MVP模式Demo
- 常用的页面跳转函数
- 学习springmvc的第十三天(自定义类型转换器ConversionServiceFactoryBean)
- 树莓派交叉编译环境搭建 for Mac
- sketch 映客Android 设计
- Apache 的 httpd 过程占用大量内存原因及其解决方案
- win10上使用putty通过ssh连接Linux
- CSS基础知识总结之基本概念