使用双指针在C ++中动态2d数组

时间:2014-02-08 19:44:13

标签: c++ pointers matrix pointer-to-pointer

我有以下代码,我确保按照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];
    }
}

2 个答案:

答案 0 :(得分:1)

在for循环中分配内存

matrix[i]= new int[numberOfColumn]; 
     instead of matrix[numberOfRows]= new int[numberOfColumn];

注意:您还需要释放分配的内存

更正后的代码

http://ideone.com/ILw1qa

答案 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]