高手帮我解决下
#include <stdio.h>
#include <ctype.h>
void main()
{
char* str = "1234" ;
char a[] = {'1' , '2' , '3' , '4'};
printf("str strlen:%d sizeof:%d\n",strlen(str) , sizeof(str));
printf("a strlen:%d sizeof:%d\n",strlen(a) , sizeof(a));
}
运行结果:
str strlen:4 sizeof:4
a strlen:7 sizeof:4
请按任意键继续. . .
#include <stdio.h>
#include <ctype.h>
void main()
{
char* str = "1234" ;
char a[] = "1234";
printf("str strlen:%d sizeof:%d\n",strlen(str) , sizeof(str));
printf("a strlen:%d sizeof:%d\n",strlen(a) , sizeof(a));
}
运行结果:
str strlen:4 sizeof:4
a strlen:4 sizeof:5
请按任意键继续. . .
他们的运行结果为什么会不同,特别是第一个的strlen(a)的返回值还是7 ,这是为什么?
[解决办法]
char a[] = "1234";最后有一个'\0'表示字符串结束,所以储存空间是5,字符串长度是4。
char a[] = {'1', '2', '3', '4'};后面没有'\0',所以储存空间是4,字符串长度未知,在其储存空间后面找到'\0'为止。
[解决办法]
同意cnzdgs
关键就是一个:字符串结束符'\0'标志着字符串的结束
[解决办法]
弄清楚数组,字符串,指针这些基本概念和关系吧
还有常用的EDF,0,'0','\O','\n'呵呵