第四章_表达式_4.9 sizeof 运算符

4.9 sizeof 运算符

4.9 sizeof 运算符

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

sizeof (type)

sizeof expr

在第二种形式中,sizeof返回的是表达式结果类型的大小,sizeof并不实际计算其运算对象的值。

Sales_data data, *p;
sizeof(Sales_data);		// 存储 Sales_data 类型的对象所占的空间大小
sizeof data;			// data 的类型大小,即 sizeof(Sales_data)
sizeof *p;				// p 所指向类型的空间大小,即 sizeof(Sales_data)
sizeof p;				// p 指针所占的空间大小
sizeof data.revenue;	// Sales_data 的 revenue 成员对应类型的大小
sizeof Sales_data::revenus; // 另一种获取 revenue 大小的方式

sizeof运算符的结果部分地依赖于其作用的类型:

  • char或者类型为char的表达式执行sizeof运算,结果得 1
  • 对引用类型执行sizeof运算得到被引用对象所占空间的大小
  • 对指针执行sizeof运算得到指针本身所占空间的大小
  • 对解引用指针执行sizeof运算得到指针指向的对象所占空间的大小,指针不需有效
  • 对数组执行sizeof运算得到整个数组所占空间的大小,等价于对数组中所有元素各执行一次sizeof运算并将所得结果求和
  • string对象或vector对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中的元素占用了多少空间
// 返回数组 ia 的元素数量
constexpr size_t sz = sizeof(ia) / sizeof(*ia);
int arr2[sz]; // sizeof 返回一个常量表达式,可以用结果声明数组的维度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值