sizeof 运算符

sizeof 运算符

sizeof(type) // sizeof(类型)
sizeof expr // sizeof 表达式

返回一条表达式或一个类型所占的字节数,所得的值是一个size_t类型。

Sales_data data,*p;

sizeof(Sales_data);
sizeof data; // 即 sizeof(Sales_data);
sizeof p; // 指针所占空间的大小
sizeof *p; // sizeof(*p), 即 sizeof(Sales_data);
sizeof data.revenue; // Sales_data中revenue的类型的大小
sizeof Sales_data::revenue; // 与上式等价

sizeof并不会实际求运算对象的值,所以即使p是一个未初始化的指针也不会有影响。
在sizeof中解引用一个无效指针仍是一种安全的行为,因为指针实际上并没有被真正使用,sizeof不需要真的解引用指针也能知道它所指对象的类型。

  • 对char或类型为char的表达式,结果为1
  • 对引用类型执行sizeof,得到被引用对象所占空间的大小
  • 对指针执行sizeof,得到指针本身所占空间的大小
  • 解引用指针执行sizeof,得到指向对象所占空间的大小,指针不需要有效
  • 对数组执行sizeof,得到整个数组所占空间的大小,等价于对数组所有元素各执行一次sizeof运算并将所得结果求和
  • 对string对象或vector对象执行sizeof,只返回该类型固定部分的大小,不会计算对象中的元素占用了多少空间

ps:

  • 用整个数组的sizeof求得的大小除以单个元素的大小可得到数组元素的个数
  • 因为sizeof返回的是一个常量表达式,所以可以用sizeof的结果声明数组的维度
    constexpr size_t sz = sizeof(ia)/sizeof(*ia); // 数组ia的元素数量
    int arr2[sz];
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值