@soqrave

Как правильно передать двумерный динамический массив в функцию?

Ошибка возникает 0xC0000005, когда работает функция на моменте присваивания ячейке массива значения.

#include <cstdlib>
#include <iostream>

using namespace std;




void Foo(int** matrix, int const rows, int const cols)
{
	for (int i = 0; i < rows; i++)
	{
		cout << "\n"; 
		for (int j = 0; j < cols; j++)
		{
			matrix[i][j] = 1;
			cout << "\t";
			
		}
	}
}

int main()
{
	int rows = 0;
	int cols = 0;
	cout << "Введите столбцы - ";
	cin >> rows;
	cout << "Введите строки - ";
	cin >> cols;
	int** pmatr = new int* [rows];
	Foo(pmatr, rows, cols);

	for (int i = 0; 0 < rows; i++)
			delete[] pmatr[i];
	delete[] pmatr;
}
  • Вопрос задан
  • 88 просмотров
Решения вопроса 2
Adamos
@Adamos
В С++ двумерный динамический массив передается в функцию так:
void Foo(std::vector< std::vector <int> > &matrix)
А онанизм с массивами указателей - это спагетти и гарантированные утечки и сегфолты.
Ответ написан
Zoominger
@Zoominger
System Engineer
int** pmatr = new int* [rows];

А где код для двумерного массива? Столбцы вижу, а строки где? Их циклом генерят.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
02 апр. 2020, в 16:41
2000 руб./за проект
02 апр. 2020, в 16:33
10000 руб./за проект
02 апр. 2020, в 16:17
6000 руб./за проект