几天前,我从互联网上了解到创建 2D 分配的内存阵列,它工作得很好。要访问我们只是简单地使用的数组matrix[i][j]
,但是有什么方法可以通过使用*
符号而不是[]
输入以及其他方法来取消引用这个二维数组?
第一个问题已解决,我可以使用*(*(matrix + i) + j)
现在我有另一个问题,最后一个代码段是释放分配的内存(我也是从互联网上得到的),但我不明白,为什么我不能使用delete [] matrix
?
int **matrix;
// dynamically allocate an array
matrix = new int *[row];
for (int count = 0; count < row; count++)
{
matrix[count] = new int[col];
}
// input element for matrix
cout << endl << "Now enter the element for the matrix...";
for (int i=0; i < row; i++)
{
for (int j=0; j < col; j++)
{
cout << endl << "Row " << (i+1) << " Col " << (j+1) << " :";
cin >> matrix[i][j]; // is there any equivalent declaration here?
}
}
// free dynamically allocated memory
for( int i = 0 ; i < *row ; i++ )
{
delete [] matrix[i] ;
}
delete [] matrix ;