输出结果为什么是7?!不应该是3吗?

#include <stdio.h>
#include <string.h>

void main()
{
char x[]={0xBC,0xDD,0xCA};
int len=strlen(x);
printf("%d\r\n",len);
}

天涯尽头无女友
浏览 80回答 2
2回答

白衣染霜花

sizeof(x)应该是3strlen(x)就不一定,因为strlen()计算数组元素个数直到遇到'\0'。显然在索引前3个元素时并没有遇到'\0',因此编译器会继续越界索引。

HUWWW

strlen是遇到 '\0' 算有多少个字节的,显然,x[]根本没有一个值是0,因此strlen是任意的,要想得到3,应该用sizeof
打开App,查看更多内容
随时随地看视频慕课网APP