您的位置:首页 > 编程语言 > C语言/C++

C语言中关于字对齐的问题

2013-06-25 17:27 288 查看
在C语言中,有关存储的问题会设计到一些对齐概念的理解,我们知道,为了能使CPU对变量进行高效快速的访问,变量的起始地址应该具有某些特性,即所谓的“对齐”。例如对于4字节的int类型变量,其起始地址应位于4字节边界上,即起始地址能够被4整除。变量的对齐规则如下(32位系统):char 在字节边界上对齐short (16-bit) 在双字节边界上对齐int and long (32-bit) 在4字节边界上对齐float 在4字节边界上对齐double 在8字节边界上对齐这里纯粹是为了计算机存储方便设计的,在设计到对齐概念时,只需要理解存储单元的首地址必须能够和该存储类型变量的对齐方式整除,例如: 存储int型,sizeof(int)=4.,所以地址必须要能够被4整除,这个问题在结构体占用存储单元大小计算的时候会用到:比如:
struct

{

int a;

char b;

int  c;

}test;

sizeof(test)=?
结果是12,这就是对齐的概念,
再看下边几个:
struct{char a;int  c;float d;char  e;double f;}test;sizeof(test)=?
结果是24,
这里需要注意的一个问题是:
对于double型的数据也是字对齐,可以这么理解虽然double占用2个字(dw),即8个字节(byte),但它的对齐方式仍然是字对齐,只是在存储空间上需要占用8个字节的空间,
也可以这么理解,在对齐方式中,只有字节对齐、半字对齐、字对齐三种方式,double属于字对齐,float、int也属于字对齐。
阅读(665) | 评论(0) | 转发(0) |0上一篇:黑客帝国 数字雨 屏幕保护程序 linux ubuntu下一篇:转--uc/OS 任务调度机制相关热门文章神经性皮炎 麻将邮政快递代收货款 邮票...武汉扑克透视眼镜 麻将技巧...www.fenghuangyulepingtai.com...win7和centos双系统时间不一致...test123编写安全代码——小心有符号数...使用openssl api进行加密解密...一段自己打印自己的c程序...sql relay的c++接口GCC编译命令推荐系统常用算法C++Primer笔记 第八章 标准IO...c语言中的#号和##号的作用...gstreamer插件开发-------sink...给主人留下些什么吧!~~评论热议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: