我试图创建一个void类型的函数来创建一个二维动态数组,并在主函数中创建某种指针以快速访问这个二维数组,但最终出现了一堆错误。我知道通过相同类型的 double 来做到这一点会更容易,但我已经想知道这是否可以通过void实现?
using namespace std;
void Array(unsigned int rows, unsigned int colms)
{
double** array2d = new double* [rows];
for (unsigned int i = 0; i < rows; i++)
array2d[i] = new double[colms];
}
int main()
{
// 1. Создание двумерного массива
unsigned int numRows = 4;
unsigned int numCols = 10;
void (*list)(unsigned int, unsigned int) = Array;
// 2. Инициализация двумерного массива
int data = 0;
for (unsigned int i = 0; i < numRows; i++)
for (unsigned int j = 0; j < numCols; j++)
{
list[i][j] = data;
data++;
}
// 3. Выводим двумерный массив в консоль
for (unsigned int i = 0; i < numRows; i++)
{
for (unsigned int j = 0; j < numCols; j++)
cout << list[i][j] << " ";
cout << endl;
}
// 4. Освобождаем память
for (unsigned int i = 0; i < numRows; i++)
{
double* p_row = list[i];
cout << i << ": " << p_row;
delete[] p_row;
cout << " -(delete[] p_row)-> " << p_row;
p_row = nullptr;
cout << " -(p_row = nullptr)-> " << p_row << endl;
}
delete[] list;
list = nullptr;
return 0;
}