strlen 和 sizeof 的用法与区别

        今天我们来说一下strlensizeof的区别与用法,相信刚接触这两个的小伙伴们都会有些疑惑与困扰。

  strlen

strlen是一个库函数,我们从上次分享的一个查询库函数的网站上看一下对它的解释:

 从这段接受中我们可以看出来strlen专门用来求字符串长度的函数,而它的返回值是size_t类型

(***size_t 是一些C/C++标准在stddef.h中定义的,size_t 类型表示C中任何对象所能达到的最大长度,它是无符号整数。)

既然是函数,那么肯定有包含它的头文件,让我们来看一下:

 所以我们在使用strlen时还需要引用它的头文件.

说完了strlen,我们来看一下sizeof;

sizeof

sizeof则与strlen不同,它并不是函数,而是c语言中的单目操作符

 它时用来计算操作数的类型长度,并以字节为单位。

如果光用文字表述,肯定理解的不会那么深刻,而且为什么sizeof就不能用来求字符串呢?那么我们来上代码:

 我们明显能够看到这个字符串中含有6个字符,那么我们来运行一下,看看输出结果:

 我们看到strlen输出的的确是6.而sizeof输出的却是7,这是为什么呢?

从前面的定义中我们看到sizeof时用来求操作数的占用的内存大小的,可是明明只有6个字符,可是却输出7呢?为了弄清楚,我们来看一下这个字符串在内存中的存储情况:

从这里我们看到原来在我们给arr这里存入abcdef的时候,系统还多放入了一个\0,也就解释了为什么sizeof返回的值是7了.那么为什么系统要在这里放入一个\0呢?

其实关于strlen的设定就是当读取到\0的时候就停止,没有\0的话就一直读取下去,而当我们在定义一个字符串变量的时候,系统就会在尾部放入一个\0,以此来终止strlen

所以以后千万不要再用混了哦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值