C++ 在C+中初始化二维数组(矩阵)+;

C++ 在C+中初始化二维数组(矩阵)+;,c++,for-loop,multidimensional-array,C++,For Loop,Multidimensional Array,我试图通过for循环创建一个2D数组,但得到了一些垃圾随机数 代码: 无符号整数i,j; 整数矩阵[10][10]//={{},{}}; 对于(i=0;i

我试图通过for循环创建一个2D数组,但得到了一些垃圾随机数 代码:

无符号整数i,j;
整数矩阵[10][10]//={{},{}};
对于(i=0;icout数组的维数是用来访问它的索引数,它不同于维度的大小(维度的一行中有多少个元素),它不同于数组的大小或完整数组中的元素数

根据您所写的内容,您正在编写一个由10行组成的二维数组,每个行包含10个元素,总大小为100个元素

如果要使用该语法创建初始值设定项列表,则必须指定嵌套大括号中的每一行和每一个元素。总数组有一组顶级大括号,然后每个子数组有一组大括号。可以使用大括号包围每一行,将每一个元素指定为逗号分隔的列表:

unsigned int i, j;
int matrix[10][10] = {{1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10}};
编辑:表达式sizeof(matrix[i])给出的数组大小为40,因为编译器可以在编译时计算出来,但依赖它可能会有风险,因为如果将它更改为指向数组的指针,或者将数组作为参数传递给函数,它将给出指针的大小,而不是数组的大小(如本文所述:)。最好用已知长度显示如下数组:

for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {
        cout <<matrix[i][j] << " " << flush;
    }
    cout << endl;
}
然后

(i=0;i{ 对于(j=0;jCUT是一个2D数组,而不是10D的代码填充矩阵?@ jjCOPL为什么你期望不同的输出比你看到的?你想看到什么?你可以考虑定义一些常量,而不是使用<代码> sieOS/<代码>(这不符合你的预期方式)。。如果将其中一个数组维度更改为与另一个不同的数字,则当前代码将中断。请尝试以下操作:
const int dim1=10;const int dim2=10;int matrix[dim1][dim2];for(i=0;i
aaah,谢谢你的更正。我以前没有测试过,并且误解了编译器是如何处理数组和指针的。谢谢!我也学到了一些东西。我将编辑
unsigned int i, j;
int matrix[10][10] = {{1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10},
                     {1,2,3,4,5,6,7,8,9,10}};
for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {
        cout <<matrix[i][j] << " " << flush;
    }
    cout << endl;
}
#define ROWS 10
#define COLS 10
int matrix[ROWS][COLS] = ...;
for (i = 0; i < ROWS; i++) {
    for (j = 0; j < COLS; j++) {
        cout <<matrix[i][j] << " " << flush;
    }
    cout << endl;
}