已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是 ()(长度使用sizeof比较)
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[]="xyz",b[]={'x','y','z'};
cout << strlen(a) << endl;
cout << strlen(b)<< endl;
cout << sizeof(a)<< endl;
cout << sizeof(b)<< endl;
return 0;
} b[]={'x','y','z'} //长度未知,因为数组最后没有结束符'\0',不知道后面什么位置有'\0',所以结果变成了7,不同的运行可能有不同的结果,所以未知
b[4]={'x','y','z'} 等价于 b[4]={'x','y','z','\0'} 等价于 b[]={'x','y','z','\0'} //这样的话strlen长度为3
而a[]是个字符串,结尾有'\0',所以它的strlen为3 sizeof操作符返回的是参数所占的内存大小,a[]是字符串,包含结束符'\0',所以是4个内存大小,而b[]是字符数组,有三个元素,所以为3个内存大小