需要澄清数组语法吗 在C++中声明2D数组有什么不同: int mp[3][3]={{0,2,1}, {0,2,1}, {1,2,0}};

需要澄清数组语法吗 在C++中声明2D数组有什么不同: int mp[3][3]={{0,2,1}, {0,2,1}, {1,2,0}};,c++,arrays,C++,Arrays,这个呢 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++)

这个呢

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] );
< >但是C++编译器会给你<强>警告:第二种声明类型的<>强>下的丢失括号。< /强>

编辑:
正如你所评论的:我的程序给了我不同的结果


我已经写了一个代码。工作在C++(GCC-4.7.2)上。p> 什么语言?有些处理不同。@ C++中的A- C。我编辑补充说,我需要用C++理解它,因为我的程序给了我不同的结果。我猜我换了别的东西,忘了它。@ Chase你的编译器是什么?@ Grjjas-Chhanhan-VisualStudioC++ Visual Studio C++ 2010的每一个[DCL,init,AGGR] ] 10,它们应该是等价的。§11甚至有一个例子几乎完全符合你的情况。@Angew在我忘记之前,谢谢你。在你为我澄清这个问题之后,我才发现了我的程序的真正问题。嗯,一些C++编译器(我假设,一些C编译器)会给出警告。
int mp[][3]={{0,2,1},
              {0,2,1},
              {1,2,0}};