C++这是为什么啊

来源:百度知道 编辑:UC知道 时间:2024/06/14 16:39:14
#include<iostream>
using namespace std;
void main()
{
char a[100]={"strend"};
cout<<a<<endl;

}

#include<iostream>
using namespace std;
void main()
{
char a[100]={"strend","sd};
cout<<a<<endl;

}

请问:为什么第一个能打印出strend,而第二个就会报错
>f:\vs2008c++\test\test\test.cpp(5) : error C2078: 初始值设定项太多
那为什么这个就可以呢?char *a[]={"strend","sdfsdf"};

char a[100]={"strend","sd};

定义了一个长度的100的一维数组,但是你却为其指定了一个二维的初始化列表。而且,结尾还少了一个引号。

char a[2][100]={"strend","sd"};

这样才可以。

char *a[]={"strend","sdfsdf"};

实际上,这也是定义了一个“二维数组”,而且是一个不规则数组,[]的数值(第二维的长度)由初始化列表中的每一项的长度确定,第一维的长度由初始化列表中的项目数量确定。