转载一篇博客:

http://blog.csdn.net/hairetz/article/details/4084088

1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。

就是说每个成员要考虑之气那成员的地址来存储

比如

struct aa

{

short ss;//本来用两个字节就好了,但是因为int需要2*2个字节,ss如果只用2个字节存储,则a就不是从2*2整数倍数开始存储

int a;

}

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

就是当一个结构体里还有结构体则 该结构体从这个结构体里最变量最大字节数整倍开始存储

3:收尾工作:结构体的总大小,也就是sizeof的结果,.必须是其内部最大成员的整数倍.不足的要补齐.

就是最后面计算出来不足最大成员整数倍要增加到整数倍。

#include

using namespacestd;

typedefstructbb

{int id; //[0]....[3]

double weight; //[8].....[15]      原则1

float height; //[16]..[19],总长要为8的整数倍,补齐[20]...[23]     原则3

}BB;

typedefstructaa

{char name[2]; //[0],[1]

BB b; //[24]......[47]          原则2

int id; //[4]...[7]          原则1

double score; //[8]....[15]

short grade; //[16],[17] 原则最后一条

}AA;intmain()

{

cout<

}

原文:http://www.cnblogs.com/hong2016/p/6730128.html

c语言怎样自动对齐,c语言自动对齐原则相关推荐

  1. C语言结构体存储空间分配的原则

    C语言结构体存储空间分配的原则 我们在嵌入式编程中经常用到结构体,结构体内成员变量的声明顺序不同,会带来结构体整体存储空间大小的不同,这是因为在C语言里,结构体里元素存储要对齐,这个"对齐& ...

  2. python是c语言_python与c语言

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python语言调用c语言进行扩展,或者增加程序的运行速度都是特别方便的. 同时 ...

  3. c语言1A,C程序设计语言1a.ppt

    C程序设计语言1a C 程 序 设 计 第一章 C语言概述 内容 计算机语言 C语言简介 C语言发展历史 C 语言特点 计算机程序 C语言程序 C语言程序的基本结构 C语言的语句 C语言的字符集和标识 ...

  4. 第05章 Go语言函数(Go语言func)

    函数是组织好的.可重复使用的.用来实现单一或相关联功能的代码段,其可以提高应用的模块性和代码的重复利用率. Go 语言支持普通函数.匿名函数和闭包,从设计上对函数进行了优化和改进,让函数使用起来更加方 ...

  5. c语言手册 html,C语言版完全指引手册beta版——初到者必读 — 编程爱好者社区...

    主题:C语言版完全指引手册beta版--初到者必读 雨中飞燕 [专家分:18980] 发布于 2007-07-29 11:51:00 关于许多朋友提出的本版置顶帖过多且技术含量不高,版面帮助信息基本没 ...

  6. 为什么除了Go语言, 其他类C语言都是垃圾[翻译][转]

    2019独角兽企业重金招聘Python工程师标准>>> 英文原文: http://www.syntax-k.de/projekte/go-review 原始翻译: http://ww ...

  7. 自学golang【第一章:go语言基础知识】为什么要学习go语言?go语言与c语言的关系?go语言创始人?go语言的特性有哪些?go语言适合做什么?国内外有哪些企业或项目使用go语言?

    事先声明:本文部分内容参考了尹成的笔记,如果侵权请联系删除. 我是一名自学go语言的初学者,从今天开始我将会坚持更新go语言的相关知识,从入门到精通,如果大家有什么需要可以加我QQ:239479969 ...

  8. python是一门面向过程的语言_1、Python 语言介绍

    Python 是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了脚本语言和解释语言的易用性. 一.Python 的历史 Python是由创始人贵铎·范·罗萨姆(Guido ...

  9. r语言 断轴 画图_R语言基础画图/绘图/作图

    R语言基础画图 R语言免费且开源,其强大和自由的画图功能,深受广大学生和可视化工作人员喜爱,这篇文章对如何使用R语言作基本的图形,如直方图,点图,饼状图以及箱线图进行简单介绍. 0 结构 每种图形构成 ...

  10. c语言 字母 八进制表示'/1011',C语言C语言第一课:C语言概述为什么学习C语言怎样学习C语言.DOC...

    [摘要]C语言 第一课: C语言概述 为什么学习C语言 怎样学习C语言 参考资料 ----------------------------------------------------------- ...

最新文章

  1. hbase redis mongoddb neo4j 非关系型数据库简介
  2. Thread.CurrentPrincipal HttpContext.Current.User
  3. 《JS权威指南学习总结--9.5 类和类型》
  4. windows dos 命令
  5. 好程序员分享如何看待CSS中BEM的命名方式?
  6. [朴素妍][뭐라고 끝낼까][说什么结束]
  7. Bom Shanka Machines psymmetrix Delay for Mac(音频延迟效果器)
  8. 一个完整的、全面k8s化的集群稳定架构(值得借鉴)
  9. 将iGoogle-Style新标签页添加到Chrome
  10. 8.4 不能外包的解谜算法
  11. MES系统之设备管理的基础功能
  12. java木马_Java校验上传图片文件是否含有木马的两种方式
  13. block标签、inline标签、inline-block标签的特点
  14. Python爬虫:输入公司名称,爬取企查查网站中的公司信息
  15. 港珠澳大桥介绍网站设计【期末大作业】源码
  16. oracle当天八点,oracle实现动态查询前一天早八点到当天早八点的数据功能示例
  17. 使用 SimpleWebRTC 构建 WebRTC 视频聊天应用程序
  18. 以太网物理层协议整理(1)-百兆/千兆以太网
  19. 几种线程安全的Map
  20. Kernel Data Structures [LKD 06]

热门文章

  1. [五一随想] 生活长乐
  2. 在Linux上搭建TCP通信测试服务器
  3. 西雅图本地创业公司大盘点
  4. 创业公司做数据分析(一)开篇
  5. 批量文件转码工具(支持GBK,UTF-8转换)
  6. 安卓下微信内置浏览器视频出现解析错误
  7. @Controller注解的一些理解吧
  8. 【Godot】通过属性检查器显示对应节点的脚本属性
  9. AD画PCB常规问题分析
  10. 百度网盘8种批量修改文件名称重命名的方法