strlen和sizeof两个函数的用法及区别

一、strlen、sizeof的用法介绍

1.strlen:是一个用于求字符串长度的函数,包含在头文件string.h中,用于求字符串长度。

         "you are beautiful!"这个字符串长度为18

2.sizeof:是一个操作符,用于求操作数所占字节的大小。       

          可以看出,用sizeof求出的字符串"you are beautiful!"所占字节大小为19,这里可能就有小伙伴有疑问了,为什么不是18?这是因为在"you are beautiful!"的末尾还有一个隐藏的‘\0’,用于标志这个字符串的结束。

        至于为什么打印的结果不同,让我们看看接下来的strlen和sizeof的区别就知道了。

二、strlen和sizeof的区别

        区别1:strlen是一个函数,二sizeof是一个操作符;

        区别2:strlen是用于求字符串的长度的,操作对象是有要求的,得是字符串,而sizeof用与求操作数所占字节的大小,操作数任意,单位是字节;

        区别3:strlen关注内存中是否有\0,\0是作为字符串的结束标志,如果没有\0,就会持续往后找,可能会造成越界。而sizeof不关注内存中的数据。

       

        所以,对于同一个字符串,strlen找到\0就停止了,并计算\0之前的长度,而sizeof计算字符串所占字节的大小,包含了字符'\0'。

三、注意strlen的访问越界

        当我们以上例中的形式定义字符串:"you are beautiful!"在这个字符串的末尾是有意隐藏的\0的,但是如果用下图方式定义字符串,则可能出现访问越界,从而打印随机值。

像这里,就打印的是74,而不是4。所以,需要我们手动加上\0,如下图:

若是打印字符串,则可能会打印一些乱码:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值