C语言的字符串长度问题
#include<stdio.h>
#include<string.h>
void main()
{
char p[]={'a','b','c'},q[10]="abc";
printf("%d %d\n",strlen(p),sizeof(q));
}
运行结果是7和10,为什么不是3和10呢???求大神指点! c c语言
[解决办法]
p的长度未知的!没有结束符!
strlen函数求字符串长度是以'\0'结束符为标识
因为字符串数组没有写\0结束符, 而strlen又需要\0结束符来计算长度,
所以它会以p数组内存为起点, 一直往后在连续的内存中找, 它是不管越界问题的,
直到找到一个\0,才认为这个串结束了, 然后返回长度.
所以你这样, 具体会输出几, 完全是看当时你的内存中的数据是怎么样的.