C++系列——sizeof, strlen

一. sizeof的含义以及用法

作用:返回一个对象(普通对象或类型实例化)或类型名(结构体或类类型名)的长度(占用内存的大小)。返回值类型为size_t,单位为字节。

语法形式:

sizeof (type name);
sizeof (expr);
sizeof expr;

使用sizeof的结果会依赖于expr的类型:

  • 对普通对象,会返回其所占用的内存大小,比如32位机器上,char(1 byte),short(2 byte),int(4 byte),long(4 byte),long long(8 byte),float(4 byte),double(8 byte);对引用类型,同样也会返回其所占用的内存大小;
  • 对指针类型,会返回存放地址值所需的内存大小,比如32位机器上,地址长度为32位,即4 byte;注意,如果我们要取得指针指向对象占用内存大小,则要对该指针解引用(*);
  • 对数组类型,会返回单个数组元素占用内存大小乘上数组元素个数,即该数组所占用的内存大小;所以一般我们可以通过sizeof(array)/sizeof(*array)来求出数组元素的元素个数。

二. strlen的含义以及用法

作用:返回字符串的长度,计算方式为从字符串中的第一个字符开始,直到第一次遇到空字符(‘\0’)。

语法形式:std::size_t strlen( const char* str );


三. 二者的对比

对于字符串类型对象,返回值差别:

  • sizeof返回该字符串占用内存的全部长度,还包括了结尾符(空字符,'\0'),而strlen的计算则不包含空字符,故而一般sizeof返回的值比strlen返回的值大1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值