若定义int a[ ][3]={1,2,3,4,5,6,7};第一维大小

如题,说出理由,不会的别瞎说
我也认为是3,那为什么有那么多的人说是不确定呢!

是3没错的。
这里相当于初始化数组
int a[][3]=
{1,2,3,
4,5,6,
7,0,0}
这个初始化对于这个数组的前7个元素分别初始化为1,2,2,4,5,6,7,剩余则全部初始化为0;这个数组是2维数组,给出第2维长度为3,那么编译器根据初始化的情况对第一维长度进行判断,给出能容纳所有初始化数值的最小长度。这里编译器应该选择a[3][3],即初始化了个3X3数组,一共9个元素。

参考资料:bear830810's brain

温馨提示:内容为网友见解,仅供参考
第1个回答  2007-04-14
/* blackxcq正解,细微之处的问题看来我还比较模糊。

int a[][3]={1,2,3,4,5,6,7};

这种写法第一维应该是不能确定的才对,你在编译时编译器会给你一个unknown size的error。

因为其可能是大于等于3的任意值,比如:
int a[3][3] = {{1,2,3},{4,5,6},{7,0,0}};
int a[4][3] = {{1,2,3,4},{5,6,7,0},{0,0,0,0}};
.
.
.

所以这样int a[][3]的第一维size不能确定,这样的写法是错误的。*/

昏,我太搞笑了,看来现代人缺的就是对自己的信任和对问题研究的认真态度。

blackxcq二次回答和bear830810正解。我演小丑呵呵!
第2个回答  2007-04-14
我说错了,应该是c++中第二维大小必须给定,第一维大小可以省略,因为对二维数组而言,先是列坐标先发生变化,然后行坐标才发生变化。所以一定先给定列数,这样编译器才知道从哪个数开始是第二行的,所以第一维应该为3,刚才在vc6.0下验证是正确的,不好意思,先前误导了foreverowes,注意:如果只是声明,一定要指定两个维数,要不编译器会说不知道大小,但是初始化可以省略第一维
相似回答