LINUX.ORG.RU

История изменений

Исправление beastie, (текущая версия) :

int *
func(int *n)
{
    int *a = calloc(*n, sizeof(int));
    *n *= sizeof(int);
    return a;
}

int
main()
{
    int n = 10;
    int *a = func(&n);
    printf("%d\n", n);
    return 0;
}

Но 3-й вариант будет всё ж лучше. Т.е. массив — в параметры, новое значение кол-ва — через return.

int
func(int **a, int n)
{
    *a = calloc(n, sizeof(int));
    return n * sizeof(int);
}

int
main()
{
    int n = 10;
    int *a;
    n = func(&a, n);
    printf("%d\n", n);
    return 0;
}

В общем — use imagination.

Исходная версия beastie, :

int *
func(int *n)
{
    array = calloc(*n, sizeof(int));
    *n *= sizeof(int);
}

int
main()
{
    int n = 10;
    int *a = func(&n);
    printf("%d\n", n);
    return 0;
}

Но 3-й вариант будет всё ж лучше. Т.е. массив — в параметры, новое значение кол-ва — через return.

int
func(int **a, int n)
{
    *a = calloc(n, sizeof(int));
    return n * sizeof(int);
}

int
main()
{
    int n = 10;
    int *a;
    n = func(&a, n);
    printf("%d\n", n);
    return 0;
}

В общем — use imagination.