3

像这样在 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 个元素本身都是数组,而底部是一个非数组元素的数组,还是编译器都读取相同?

4

2 回答 2

6

它们是等价的。第一个是完全支撑的形式。当解释明确时(例如在第二种形式中),标准允许省略大括号。

于 2013-03-03T21:48:25.513 回答
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) 上工作正常。在这里检查

于 2013-03-03T21:53:31.780 回答