在C ++中声明2D数组之间有什么区别:
int mp[3][3]={{0,2,1},
{0,2,1},
{1,2,0}};
这个?
int mp[3][3]={0,2,1,
0,2,1,
1,2,0};
上面是一个数组,其中所有3个元素都是数组本身,而底部的数组是非数组元素的数组,或者编译器都读取它们是否相同?
答案 0 :(得分:6)
他们是等同的。第一个是完全支撑的形式。当解释明确时(例如在第二种形式中),标准允许删除括号。
答案 1 :(得分:1)
两者都相同,您可以使用以下循环访问矩阵的元素:
for (i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d ",mp[i][j] );
在第一种情况下给第一个参数括号时的一个区别可以省略,如:
int mp[][3]={{0,2,1},
{0,2,1},
{1,2,0}};
但是C ++编译器会为你提供警告:在第二种声明的周围缺少大括号。
修改强>
正如你评论的那样:我的程序给了我不同的结果
我写了一段代码。在C ++(gcc-4.7.2)上正常工作。 Check here