求教c++有关问题
求教c++问题
为什么strlen(b)的结果为22?
为什么strlen(b)的结果为15?
------解决方案--------------------
缺少结束符‘\0’,所以结果不确定。strlen长度计算遇到\0才结束。
------解决方案--------------------
strlen会一直顺序查找到字符'\0'为止。
char a[] = "abcdef";
和
char *a = "abcdef";
这一类的定义编译器都会在后面加上一个'\0',
但
char b[]={'a','b','c','d','e','f'};
这种方式后面不会被上这个字符‘\0',于是strlen就会一直想后找,到第多少才能结束,那得碰运气,很可能你每次运行的结果都不一样。
------解决方案--------------------
strlen函数是以字符0为结束的 所以要加上char b[]={'a','\0'};这样才可以
如果没有的话 得出上述结果是因为b数组后面可能有一个'\0'的字符 所以才有那种结果的
#include<iostream>
using namespace std;
int main()
{
char a[]="abcdef";
char b[]={'a','b','c','d','e','f'};
cout<<strlen(a)<<endl;
cout<<strlen(b)<<endl;
return 0;
}
为什么strlen(b)的结果为22?
#include<iostream>
using namespace std;
int main()
{
char a[]="abcdef";
char b[]={'a'};
cout<<strlen(a)<<endl;
cout<<strlen(b)<<endl;
return 0;
}
为什么strlen(b)的结果为15?
------解决方案--------------------
缺少结束符‘\0’,所以结果不确定。strlen长度计算遇到\0才结束。
------解决方案--------------------
strlen会一直顺序查找到字符'\0'为止。
char a[] = "abcdef";
和
char *a = "abcdef";
这一类的定义编译器都会在后面加上一个'\0',
但
char b[]={'a','b','c','d','e','f'};
这种方式后面不会被上这个字符‘\0',于是strlen就会一直想后找,到第多少才能结束,那得碰运气,很可能你每次运行的结果都不一样。
------解决方案--------------------
strlen函数是以字符0为结束的 所以要加上char b[]={'a','\0'};这样才可以
如果没有的话 得出上述结果是因为b数组后面可能有一个'\0'的字符 所以才有那种结果的