猿问

使用strlen()函数的问题?

char a[]={'a','b','c','d'};
strlen(a)=7;
char b[]={'a','b','c','d','\0'};
strlen(b)=4;
为什么会有这样的区别?
strlen()函数不是用于字符串的吗,为什么也可以用于字符数组?

慕慕森
浏览 257回答 2
2回答

德玛西亚99

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

烙印99

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

相关分类

Python
Java
我要回答