为了账号安全,请及时绑定邮箱和手机立即绑定

使用strlen()函数的问题?

使用strlen()函数的问题?

慕慕森 2021-02-15 13:10:28
char a[]={'a','b','c','d'};strlen(a)=7;char b[]={'a','b','c','d','\0'};strlen(b)=4;为什么会有这样的区别?strlen()函数不是用于字符串的吗,为什么也可以用于字符数组?
查看完整描述

2 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

字符串和字符数组的区别:字符串用字符数组保存,表示的是字符数组首地址到第一个'\0'为止的内容。
你的程序里,strlen(a)等于7,其实是strlen越界访问了。在a的4个字节后面,有一些未使用的内存,那边前3个字节非0,第4个字节是0,所以合起来'\0'前面有7个非0字符。

查看完整回答
反对 回复 2021-03-28
?
烙印99

TA贡献1829条经验 获得超13个赞

简单说,字符串本质就是字符数组
如字符串“abcd”=字符数组{'a','b','c','d','\0'}
'\0'是结束符,不计入字符数,所以strlen(b)=4
strlen(a)=7的原因是原数组无结束符,而'd'之后的值是随机的、未知的,刚好第八个值是'\0’

查看完整回答
反对 回复 2021-03-28
  • 2 回答
  • 0 关注
  • 256 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信