C++ 在C+中初始化二维数组(矩阵)+;
我试图通过for循环创建一个2D数组,但得到了一些垃圾随机数 代码:C++ 在C+中初始化二维数组(矩阵)+;,c++,for-loop,multidimensional-array,C++,For Loop,Multidimensional Array,我试图通过for循环创建一个2D数组,但得到了一些垃圾随机数 代码: 无符号整数i,j; 整数矩阵[10][10]//={{},{}}; 对于(i=0;i
无符号整数i,j;
整数矩阵[10][10]//={{},{}};
对于(i=0;i cout数组的维数是用来访问它的索引数,它不同于维度的大小(维度的一行中有多少个元素),它不同于数组的大小或完整数组中的元素数
根据您所写的内容,您正在编写一个由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;j CUT是一个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;
}