sizeof运算符

sizeof运算符返回一条表达式或一个类型名字所占的字节数。满足右结合律,得到一个size_t类型(无符号整数)的常量表达式(constexpr)。形式如下:

     sizeof (type)

     sizeof  expr

sizeof并不实际计算其运算对象的值,运算结果部分地依赖于其作用的类型:

  • 对char或者类型为char的表达式执行sizeof运算,结果为1。
  • 对引用类型执行sizeof运算得到被引用对象所占空间的大小。
  • 对指针执行sizeof运算得到指针本身所占用空间的大小。
  • 对解引用指针执行sizeof运算得到指针所指的对象所占空间的大小,指针不需要有效(因为并不实际执行解引用)。
  • 对数组执行sizeof运算得到整个数组所占空间的大小,sizeof并不会把数组转换成指针来处理。
  • 对string对象或vector对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中的元素占用了多少空间。因为string和vector是类类型,类类型对象的大小由类定义决定,而这两个类都定义了其他数据成员。比如string str="123";,sizeof str的结果并不等于3,vector<int> ivec{1,2,3};sizeof ivec的结果并不等于12。

因为sizeof的返回值是一个常量表达式(constexpr),所以可以用sizeof的结果声明数组的维度:

constexpr size_t sz=sizeof(ia)/sizeof(*ia);  //ia是一个数组
int arr[sz];     //OK,sizeof返回一个常量表达式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值