Я пытаюсь получить массив двумерных указателей в вызывающей функции. I называется функцией подмножество из основной функции, то функция подмножества будет возвращать 2D массивполучить 2d-указательный массив в вызывающей функции
int **subsets(int *A, int n1, int *len1)
{
int **arr;
num = pow(2, n1);
*len1 = num;
arr = (int **) malloc(num * sizeof(int *));
for (i = 0; i < num; i++)
{
arr[i] = (int *)malloc(sizeof(int));
}
return arr;
}
указателя В этой функции я заявляю 2D-массив динамически int **arr
, а затем пытается получить этот обратный массив в основном функция. Обратите внимание, чем в *len1
я назначаю строки ценят 2D массива и значения столбцов 2D-массива будут различные базы на подмножествах, как для данного array[1,2,3]
это будет выглядеть следующим образом:
[
[],
[1],
[1, 2],
[1, 2, 3],
[1, 3],
[2],
[2, 3],
[3],
]
Я в основном выполняя задачу подмножества, но не в состоянии получить 2D-возвращаемый массив в основной функции, может кто-нибудь, пожалуйста, скажите мне, как получить этот 2D-указательный массив в вызывающей функции.
Цените ответ .. :)
[обновить from comment:]
Это, как я пытался позвонить ей из main
функции, но это не так:
int **res = subsets(A, n1, &len1);
int i = 0, j = 0;
for(i = 0; i < len1; i++)
{
for(j = 0; j < n1; j++)
{
printf("%d", res[i][j]);
}
printf("\n");
}
Поскольку значение n1 (column) будет отличаться для каждой строки.
«Заметьте, что в * len1 ...» - где именно мы должны были это отметить? –
Не могли бы вы объяснить, для чего (на земле) используется аргумент 'int * A'? –
Кроме того, объясните, что «невозможно получить 2D-возвращаемый массив в основной функции». Где именно в коде, который вы предоставляете, есть ли какие-либо попытки сделать это? Мы должны догадаться, в чем проблема? –