В C/C++
, когда вы передаете массив функции, он исчезает как указатель, указывающий на первый элемент массива.Итак, в функции pixels()
вы возвращаете адрес выделенной переменной стека.Адрес возвращаемой переменной больше недействителен, поскольку при возврате pixels()
выделенная переменная стека выходит из области видимости.Таким образом, вместо этого вы должны использовать переменную, чье хранение является динамическим (т. Е. Использовать malloc, calloc).
Итак, для двумерного массива вы можете использовать float** arrayVariable;
.Кроме того, если вы передаете это функции, вам следует опасаться, сколько у нее строк и столбцов.
int rows, columns;
float** pixels()
{
// take input for rows, columns
// allocate memory from free store for the 2D array accordingly
// return the array
}
void drawLine( float** returnedArrayVariable )
{
//drawing the line
}
Поскольку двумерный массив сам управляет ресурсами, он должен вернуть ресурсы обратно вбесплатный магазин, используя бесплатно .