我有以下代码,我确保按照Pointer-to-pointer dynamic two-dimensional array
中的说明完成了所有操作我需要我的2D矩阵是动态的,即用户需要输入尺寸。但是当从用户那里获取输入时,我的cin出错了。以下代码有什么问题?
int numberOfRows, numberOfColumn;
cout << "Please enter the number of rows: ";
cin >> numberOfRows;
cout << endl << "Please enter the number of columns ";
cin >> numberOfColumn;
int** matrix= new int*[numberOfRows];
for (int i=0; i<numberOfRows; i++)
{
matrix[numberOfRows]= new int[numberOfColumn];
}
for (int i=0; i<numberOfRows; i++)
{
for(int j=0; j<numberOfColumn; j++)
{
cout << "Please enter Row " << (i+1) << " Column "<< (j+1) <<" element: ";
cin>> matrix[i][j];
cout << endl;
}
}
for (int i=0; i<numberOfRows; i++)
{
for(int j=0; j<numberOfColumn; j++)
{
cout << matrix[i][j];
}
}
答案 0 :(得分:1)
在for循环中分配内存
matrix[i]= new int[numberOfColumn];
instead of matrix[numberOfRows]= new int[numberOfColumn];
注意:您还需要释放分配的内存
更正后的代码
答案 1 :(得分:1)
你有这个:
for (int i=0; i<numberOfRows; i++)
{
matrix[numberOfRows]= new int[numberOfColumn];
}
应该是:
for (int i=0; i<numberOfRows; i++)
{
matrix[i]= new int[numberOfColumn];
}
请注意,matrix[numberOfRows]
已更改为matrix[i]