ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

来自c++primer5的sizeof运算符

2020-10-10 15:00:25  阅读:184  来源: 互联网

标签:运算 primer5 对象 运算符 数组 sizeof 指针


sizeof运算符返回到一条表达式或类型名字所占用的字节数。sizeof运算符满足右结合律,其所得的值是一个size_t 类型的常量表达式。运算符的运算对象有两种形式:
sizeof(type) sizeof expr

因为sizeof满足右结合律并且与*运算符的优先级一样,所以表达式按照从右向左组合。也就是说sizeof(*p)。其次因为sizeof不会实际求运算对象的值,所以即使p是一个无效的指针也不会有什么影响。在sizeof的运算对象中解引用一个无效的指针仍然是一种安全的行为,因为实际上并没有被真正的使用。sizeof不需要真的解引用指针也能知道他所指的对象的类型。

C++11 新标准允许我们使用作用于运算符来获取类成员的大小。通常情况下只有通过类的对象才能访问类的成员,但是sizeof运算符无须我们提供一个具体的对象,因为想要知道类成员的大小无须真的获取该成员。

  • sizeof运算符的结果部分地依赖于起作用的类型:
  • 对char或者类型为char的表达式执行sizeof运算,结果得1;
  • 对引用类型执行sizeof运算得到被引用对象所占空间大小;
  • 对指针执行sizeof运算得到指针本身所占控件大小
  • 对解引用执行sizeof运算得到的指针指向的对象所占空间的大小,指针不需要有效
  • 对数组执行sizeof运算得到整个数组所占控件大小,等价于对数组中所有元素各执行一次sizeof运算并将所得结果求和。注意,sizeof运算不会把数组转化成指针来处理。
  • 对string对象或vector对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中的元素占用多少空间。
  • 因为执行sizeof运算能得到整个数组的大小,所以用数组的大小除以单个元素的大小得到数组中元素的个数:

因为sizoef的返回值是一个常量表达式,所以我们可以用sizeof的结果声明数组的维度。

标签:运算,primer5,对象,运算符,数组,sizeof,指针
来源: https://www.cnblogs.com/simp/p/13792680.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有