结构体小结

结构体是按照分配的大小,局部变量会自动数据对齐

1字节对齐,省空间,但cpu查找效率低

4字节对齐,不省空间,但cpu查找效率高

VC6默认的结构对齐大小

项目右键-> setting-> C/C++ ->Code Generation

如果这个值比结构体成员的sizeof值小,那么该成员的偏移量应该以此为准,

即,结构体成员的偏移量应该取二者的最小值

对齐原则

原则一:数据成员对齐规则:结构的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)

原则二:结构体的总大小,也就是sizeof的结果,必须是其内部最大成员的整数倍,不足的要补齐。

原则三:如果一个结构里有些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储。(struct a 里存有 struct b, b里有char, int, double等元素,那b 应该从8的整数倍开始存储)

原则四:对齐参数如果比结构体成员的sizeof 值小,该成员的偏移量应该以此值为准

转载于:https://www.cnblogs.com/flatcc/p/7132568.html

零基础逆向工程11_C语言05_结构体相关推荐

  1. Go语言基础(七):结构体

    文章目录 一.类型别名和自定义类型 1.自定义类型 2.类型别名 3.类型定义和类型别名的区别 二.结构体 1.结构体定义 2.结构体实例化 (1)基本实例化 (2)匿名结构体 (3)创建指针类型结构 ...

  2. C语言基础专业书,零基础学C语言(第3版) (康莉/李宽 等著) 中文pdf完整版[29MB]

    零基础学C语言(第3版)站在零基础学习的角度讲授C语言,使初学者能尽快掌握C语言程序设计的精髓,避免走弯路.在讲解知识点时,笔者采用由浅人深.逐级递进的学习方式进行内容设置安排.<零基础学C语言 ...

  3. 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态

    介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...

  4. 零基础学c语言 第2版,零基础学C语言(第2版)(1张) 康莉 等 机械工业出版社 9787111372929...

    商品描述: 基本信息 书名:零基础学C语言(第2版)(1张) 定价:59.00元 作者:康莉 等 著 出版社:机械工业出版社 出版日期:2012-04-01 ISBN:9787111372929 字数 ...

  5. 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...

  6. 【剑仙教程】易语言的结构体。自定义数据类型。

    1楼. [剑仙教程]易语言的结构体.自定义数据类型. 在易语言中,有基本数据类型,自定义数据类型. 自定义数据类型,在C语言/C++中称为结构体.这是面向对象和类的编程. . . 先上代码.打开易语言 ...

  7. c语言常量结构体的成员,c语言之结构体

    c语言之结构体 1.结构体基础知识 C语言提供了两种类型的聚合数据类型(能够同时存储超过一个的单独数据),数组和结构.数则是相同类型的元素的集合,而结构也是一些值的集合,这些值称为它的成员,单一个结构 ...

  8. c语言 结构体的,c语言之结构体

    c语言之结构体 1.结构体基础知识 C语言提供了两种类型的聚合数据类型(能够同时存储超过一个的单独数据),数组和结构.数则是相同类型的元素的集合,而结构也是一些值的集合,这些值称为它的成员,单一个结构 ...

  9. C语言之结构体和共用体

    C语言之结构体和共用体 算上这篇笔记加上之前的四篇笔记,C语言基础我们也就告一段落了,对于刚刚接触c语言的童鞋们来说,这些以及足够了,稍后我会发布数据结构,对于想要深入学习的童鞋可以继续关注.本人也算 ...

  10. python语言学习零基础教学视频_零基础学Python语言CAP全套课程

    零基础学Python语言CAP完整版课程目录 ├─{1}–[第1周,第一单元]Python编程之基本方法 │ ├─{1}–1.1课程内容和安排介绍 │ │ ├─(1.1.1)–课程内容和安排介绍-PP ...

最新文章

  1. 扩增子和宏基因组数据分析流程和可视化方案—刘永鑫(南京,2020年11月27日)
  2. matlab在绘图区加格栅,实验二(2) MATLAB绘图
  3. centos 7 如何验证oracle安装成功_linux下Oracle数据的安装详解
  4. 【C++ Primer】类的多态
  5. tomcat6.0+mysql5.0+jdk5.0+myeclipse6.0打造JSP开发平台
  6. [WCF安全系列]绑定、安全模式与客户端凭证类型:NetNamedPipeBinding、NetTcpBinding与NetMsmqBinding...
  7. Spring源码解析——如何阅读源码
  8. excel高级筛选怎么用_excel中使用高级筛选7个示例、多个条件、复制到另一个工作表公式...
  9. Mac node js环境的安装与测试
  10. c语言的常用英语单词和翻译,c语言通用英语词汇带翻译
  11. 微信公众号H5 - 使用vue开发微信公众号网页
  12. 陶哲轩实分析 3.1节 习题试解
  13. CSP2019滚粗记
  14. 解决Windows PowerShell 乱码
  15. 单纯同调与奇异同调 习题
  16. Node对象的一些方法
  17. HDU - 4322
  18. 其实,搭建一个有品质的棋牌游戏平台没那么复杂
  19. 用C语言编写简易计算器
  20. Thinkpad使用傲游浏览器的时候,无法滚动页面怎么办?

热门文章

  1. 几何学五大公理_【欧几里德的平面几何五大公理是什么?】作业帮
  2. linux进程状态a,Linux进程状态标识符含义
  3. Metamask + remix:在ropsten测试链上取出已经部署的合约并进行一些操作
  4. 区块链 FISCO BCOS网络端口讲解
  5. Mutable和Immutable
  6. 十、Oracle学习笔记:基本查询语句各子句用法
  7. Python中 sys.argv[]
  8. consul服务发现与注册于配置 (mac版为例)
  9. Spring Boot 概述、初始化器、spring-boot-maven-plugin 插件简化部署、starter 自动配置原理
  10. 小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介