Как я могу объявить массив в одной функции, передать его адрес и динамически выделить его в другой функции (в C)? - PullRequest
0 голосов
/ 01 марта 2020

Мне интересно, как я могу динамически распределять и заполнять массив, и иметь значения, доступные в другой функции. Я sh хочу сделать это без каких-либо возвращаемых значений, и поэтому я хочу передать адрес от function1 к function2, где function2 выделяет память, на которую указывает адрес из function1. Вот краткий пример псевдокода:

void func2(int **array)
{   
    // Read array length from a data file.

    *array = malloc(array_length*sizeof(int));

    // Set array values from a datafile.
}

void func1()
{       
    int *array;

    func2(&array);

    // Use array values
}

Как я могу это сделать? Я пробовал много раз, но в конечном итоге получился либо «Ошибка смещения адреса», либо «Ошибка границы адреса». В конечном итоге я sh хочу сделать это с пользовательской структурой, но я считаю, что процесс похож на динамически распределенный массив. Огромное спасибо за любую помощь!

1 Ответ

0 голосов
/ 01 марта 2020

Я думаю, вы можете сделать это следующим образом:

void func2(int **array)
{
    // Read array length from a data file.

    *array = (int *)malloc(array_length*sizeof(int));

    // Set array values from a datafile.
    (*array)[0] = 2;
    (*array)[1] = 7;
}

void func1()
{
    int *array = NULL;

    func2(&array);

    // Use array values
    printf("\n%d", array[0]);
    printf("\n%d", array[1]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...