需要澄清有关数组语法的信息

时间:2013-03-03 21:43:30

标签: c++ arrays

在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个元素都是数组本身,而底部的数组是非数组元素的数组,或者编译器都读取它们是否相同?

2 个答案:

答案 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