Я пытаюсь умножить на n ** x ** n динамические матрицы и вернуть результат. Это код для него:C++ Динамические матрицы Умножая возвращаемый выпуск
long long int** Multiply(long long int** m1, long long int **m2)
{
static long long int** output;
output= new long long int* [k];
for (int i=0; i<k; i++)
output[k]= new long long int [k];
long long int cellRes= 0;
for (int i=0; i<k; i++)
{
for (int f=0; f<k; f++)
{
for (int j=0; j<k; j++)
{
cellRes+= m1[i][j]*m2[j][f];
}
output[i][f]= cellRes;
cellRes=0;
}
}
return output;
}
Это, кажется, делает это хорошо при возвращении новой матрицы, но по какой-то причине программа сбой после выполнения Multiply() ... Даже если я создаю новый матрицы, выделите его и затем назначьте ему Multiply(), он сработает.
Я не могу понять, что я делаю неправильно. Есть идеи?
Почему выход статический? Используйте 'vector>' –
Я где-то читал, что должен был объявить его статичным, чтобы избежать ссылки на не существующую позицию памяти. Вот где я получил это от: http: // www. tutorialspoint.com/cplusplus/cpp_return_pointer_from_functions.htm – BlastDV
Во второй раз, когда вы вызываете функцию, она перезаписывает первый вывод, если вы не забудете его скопировать. Либо предоставить матрицу вывода в качестве другого параметра, либо использовать векторы и вернуть один по значению. –