一、sizeof是什么?

  sizeof是一种预编译处理,不是函数,不是一元表达式。也即,作用阶段在编译期。

二、功能是什么?

  sizeof返回变量或类型的字节数。

三、调用方式

  sizeof(object):对对象使用
  sizeof(typename):对类型使用

四、返回值情况归类

  其实质是考察各个类型所占内存的相关知识

  基本数据类型:
    char(unsigned) 1
    short(unsigned) 2
    int(unsigned) long float 4
    double 8
  函数:
    返回值的类型
  指针:
    32位系统 4
    64位系统 8
  数组:
    数组的实际大小

五、重点:对齐问题下的sizeof
  各类型对界与其字节数一致。也即起始地址需要被对界整除。
  另外,对于复合数据类型,如union、struct、class,类型字节数是成员最大对界的整数倍。

  sizeof(union)
    基本大小由最大的元素决定,但最终大小为最大对界的整数倍
    

union u1
{
double a;
int b;
}; // union u2
{
char a[];
char b;
}; // union u3
{
char a[];
int b;
}; // 16,int类型的对界为4

  sizeof(class)
    包含虚函数的类,保存了指向虚函数表的指针,而一个指针为4个字节。

  sizeof(struct) 略微复杂
    struct类型的对界为成员中的最大对界,也即struct类型的字节数是对界的整数倍,同时起始地址也是对界的整数倍。

struct nalign
{
//基本成员类型
char a; //起始地址:0 占空空间:1
int b; //起始地址:4 占用空间:4
short c; //起始地址:8 占用空间:2
//总空间为10
//struct为4对界 总空间补全到12
}; struct nalign1
{
//struct类型作为成员的情形
//
char a; //对界:1 起始地址:0 占用空间:1
nalign b; //对界:4 起始地址:4 占用空间 12
//总空间为16
//struct为对界4 总空间补全到16
}; int main(int argc, char **argv)
{
cout << sizeof(nalign) << endl; // 输出"12"
cout << sizeof(nalign1) << endl; //输出"16"
}

 总结:
    在复合类型中,成员变量的对界为成员起始地址的整数倍;复合类型的对界为成员变量的最大对界;复合类型的大小为其对界的整数倍。

最新文章

  1. [示例] Firemonkey TGridLayout &amp; TGridPanelLayout 布局
  2. MyEclipse做一个注册页面,需要注意的地方。
  3. c++中this指针的用法
  4. Groonga 3.0.8 发布,全文搜索引擎
  5. 警惕USB键盘记录器
  6. 【229】Raster Calculator - 栅格计算器
  7. Git之 基本常用命令
  8. ASP.NET MVC3 系列教程 - Razor视图引擎基础语法
  9. MBI 跨国网络传销 金字塔诈骗 解密
  10. spring3 jsp页面使用&lt;form:form modelAttribute=&quot;xxxx&quot; action=&quot;xxxx&quot;&gt;报错,附连接数据库的spring MVC annotation 案例
  11. QGis(三)查询矢量图层的要素属性字段值(转载)
  12. 201521123038 《Java程序设计》 第七周学习总结
  13. http://zthdd.bokee.com/6189963.html
  14. 升级SCCM 2012R2 SP1故障解决
  15. UOJ#449. 【集训队作业2018】喂鸽子 min-max容斥,FFT
  16. Null hypothesis TypeⅠerror Type Ⅱ error
  17. Delphi中break,exit,abort跳出循环的比较
  18. 利用adb 打开手机应用程序
  19. Redis+Keepalived实现高可用
  20. 优秀UX设计师的八条黄金法则

热门文章

  1. Unity 头发随动效果
  2. PCM音量控制
  3. 使用Json Template在Azure China创建ARM类型的虚拟机
  4. Qt中如何用QImage::Format_Indexed8表示灰度图
  5. Java基础--压缩和解压缩gz包
  6. 查看,修改ceph节点的ceph配置命令
  7. 01-19asp.net网站--关于“应用程序中的服务器错误(需添加&quot;Jquery&quot;ScriptRescourseMapping)”
  8. 回调函数(callback)经典解答
  9. [Python Study Notes]七彩散点图绘制
  10. ORACLE体系结构一 (实例(instance))--ORACLE_SID