首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求教c++有关问题

2013-07-01 
求教c++问题#includeiostreamusing namespace stdint main(){char a[]abcdefchar b[]{a,b,c

求教c++问题

#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'的字符 所以才有那种结果的

热点排行