像这样在 C++ 中声明二维数组有什么区别:
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 个元素本身都是数组,而底部是一个非数组元素的数组,还是编译器都读取相同?
它们是等价的。第一个是完全支撑的形式。当解释明确时(例如在第二种形式中),标准允许省略大括号。
两者都是相同的,您可以使用以下循环访问矩阵的元素:
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) 上工作正常。在这里检查