У меня есть этот указатель на функцию указателя, которая принимает два аргумента и, верна, возвращает указатель на массив. Но каков правильный способ вернуть указатель на массив в этом случае? Вот мой код:Указатель на функцию указателя ---> как вернуть указатель
#include <stdio.h>
#include <stdlib.h>
int **multiTable (unsigned int xs, unsigned int ys)
{
unsigned int i, j;
int **table = malloc(ys * sizeof(*table));
// should I put malloc(ys * xs * sizeof(*table))?
for(i = 0; i < ys; i++)
{
for(j = 0; j < xs; j++)
{
table[i][j] = (j+1) * (i+1);
}
}
return table; //what would be the proper way to return table? Is this ok?
free(**table); //by the way, do I need this?
}
int main()
{
int sum = 0;
sum = multiTable2(3,2);
return 0;
}
Какой бы правильный способ вернуть таблицу? Я написал таблицу возврата; нормально, или это должно быть как таблица возврата или таблицы возврата или возврата **? А также, нужно ли мне освобождать стол?
вы выделяете 'table', но не выделяют' таблицу [х] ', что приводит к [* неопределенное поведение] (HTTP: // ан .wikipedia.org/wiki/Undefined_behavior), которые вы также имеете в этом 'free' вызове. –
Тогда ваше назначение в функции 'main' также неверно. В общем, ваш компилятор должен кричать на вас! –
И ваш бесплатный звонок действительно неправильный, очень. Содержит ли этот код? –