@kWinN

Ошибки в функции создания двумерного динамического массива С++. Как исправить?

Пытаюсь создать функцию типа void для создания двумерного динамического массива и создать в функции main какой-нибудь указатель для быстрого доступа к этому двумерному массиву, в итоге получаю кучу ошибок. Понимаю, что легче было бы это сделать через тот же тип double, но мне уже интересно, возможно ли это через void?

#include <iostream>
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;
}
  • Вопрос задан
  • 236 просмотров
Пригласить эксперта
Ответы на вопрос 1
includedlibrary
@includedlibrary
Понимаю, что легче было бы это сделать через тот же тип double, но мне уже интересно, возможно ли это через void?


Звучит как: "Понимаю, что проще поглощать пищу через рот, но уже интересно, возможно ли через заднее отверстие".

Что мешает сразу сделать нормально и вернуть значение из функции:
double** 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];
    return array2d;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы