数组c 的元素具有int[2] 类型。因此,数组的每个元素最多必须使用两个初始化器来初始化。
代替
int c[3][2] = { { 4, 4, 4 },{ 7, 7 } };
^^^^^^^^^^^
举个例子
int c[3][2] = { { 4, 4 },{ 7, 7 } };
^^^^^^^^
数组 d 已正确初始化。
int d[3][3] = { {1, 1, 1}, {1, 1, 1} };
它的初始化等价于下面
int d[3][3] =
{
{1, 1, 1},
{1, 1, 1},
{0, 0, 0}
};
您似乎得到了不正确的值,因为您在访问数组时使用了错误的索引。
这是一个用 C++ 编写的演示程序,用于显示数组。
#include <iostream>
int main()
{
int a[2][2] =
{
{ 1, 2 },
{ 3, 4 }
};
int b[2][3] =
{
{ 9, 8 },
{ 7, 6, 5 }
};
int c[3][2] =
{
{ 4, 4 },
{ 7, 7 }
};
int d[3][3] =
{
{ 1, 1, 1 },
{ 1, 1, 1 }
};
for ( const auto &row : a )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
std::cout << std::endl;
for ( const auto &row : b )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
std::cout << std::endl;
for ( const auto &row : c )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
std::cout << std::endl;
for ( const auto &row : d )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
std::cout << std::endl;
}
程序输出是
1 2
3 4
9 8 0
7 6 5
4 4
7 7
0 0
1 1 1
1 1 1
0 0 0
未显式初始化的数组元素被隐式初始化为零。