Я хочу вернуть динамический массив по ссылке из функции void. Я уже искал 3 часа ответа, не нашел ничего полезного. Вот мой упрощенный код:Как вернуть динамический массив из функции void в c?
main()
{
int **a;
xxx(&a);
printf("%d\n\n", a[1]);
}
void xxx(int **a)
{
int i;
*a = (int*)malloc(5 * 4);
for (i = 0; i < 5; i++)
a[i] = i;
printf("%d\n\n", a[1]);
}
Я просто хочу, чтобы выделить динамический массив в «ххх» функции и вернуть его по ссылке на главной, чем я хочу, чтобы распечатать его или использовать его для чего-то другого. Заранее спасибо :)
редактировать
#include <stdio.h>
#include <stdlib.h>
#define MACROs
#define _CRT_SECURE_NO_WARNINGS
void xxx(int **a);
int main(void)
{
int *a;
xxx(&a);
printf("%d\n\n", a[1]);
}
void xxx(int **a)
{
int i;
*a = malloc(5 * sizeof(**a));
for (i = 0; i < 5; i++)
a[i] = i;
printf("%d\n\n", a[1]);
}
[Пожалуйста, просмотрите эту дискуссию о том, почему бы не использовать возвращаемое значение 'malloc()' и family в 'C'.] (Http://stackoverflow.com/q/605845/2173917). –
Вы близки, но с кодом все еще есть много вещей. Вы должны действительно слушать свой компилятор, поскольку он будет кричать на вас.И если нет, тогда вам нужно поднять уровень предупреждения (который вы должны делать в любом случае). –
Не используйте «магические числа». Либо «# define» их (для длины массива говорят), либо используйте 'sizeof' (для стандартных или более сложных пользовательских типов). –