C++. Работа с динамическим двухмерным массивом на указателях

264
26 июля 2017, 22:59

Здравствуйте, есть код:

#include <iostream>
#include <cmath>
using namespace std;
void print(int ** m, unsigned rows, unsigned cols)
{
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
        {
            cout << m[i][j] << " ";
        }
        cout << endl;
    }
}

int main()
{
    int ** m = new int *[5];
    for (int i = 0; i < 5; i++)
    {
        m[i] = new  int[5];
        for (int j = 0; j < 5; j++)
        {
            m[i][j] = i + j;
            cout << m[i][j] << " ";
        }
        cout << endl;
    }
    cout << "==========================" << endl;
    print(m, 5, 5);
    return 0;
}

Видно, что массив построен на указателях. При создании массива в main() он попутно и выводится, всё в порядке. А вот при выводе в методе print, выводится не корректная информацию.

Я понял, что когда в методе print я прошу вывести масcив используя индексы i и j, я использую указатели, и неверный вывод связен, скорее всего, с указанием указателя куда-то в небо, но почему так происходит? Прошу, пожалуйста, разъяснить - в чём заключается ошибка?

Answer 1

Вы не хотите заменить

for (int j = 0; i < cols; j++)

на

for (int j = 0; j < cols; j++)

?

Смотрите сами

READ ALSO
Сортировка точек на плоскости по/против часовой стрелки

Сортировка точек на плоскости по/против часовой стрелки

Есть набор точек типа std::pair<int, int>, представляющих собой вершины некоторого многоульника (вообще говоря, невыпуклого)Дана некоторая вершина...

206
ffmpeg преобразовать непроигрываемый фрагмент файла видео, в проигрываемый фрагмент?

ffmpeg преобразовать непроигрываемый фрагмент файла видео, в проигрываемый фрагмент?

С помощью API браузера произвожу захват видео (html5webm) и отправку фрагментов на удаленный сервер

145
Компиляция obs-studio (не найден FFmpeg)

Компиляция obs-studio (не найден FFmpeg)

Я решил скомпилировать программу obs-studio (я использовал clion), но при сборке cmake-а возникает ошибка:

302