关于strlen

来源:百度知道 编辑:UC知道 时间:2024/05/22 02:46:22
#include<stdio.h>
int main(void)
{
char aa[10];
printf("%d",strlen(aa));
return 0;
}

这个运行结果为什么是23啊?

应为你没有初始化,字符串以'\0'结束,strlen()直到找到'\0'后,计算'/0'之前有多少个字符,所以输出莫名其妙的结果。
char aa[10] = “\0”;结果为0。

#include<stdio.h>

int main(void)
{
char aa[10]={0}; /* 赋初值 */
printf("%d",strlen(aa)); /* 结果为 0 */

return 0;
}

你的aa没有初始化,里面的值是不确定的。
strlen从aa这个地址往后找,找出了aa实际范围,在aa后第24位字节处找到0,所以返回23。
这个strlen操作理论上已经可以算是访问越界了

strlen是找到0为止. 结果是23就说明第24位找到了0呗