Каков синтаксис для сигнатуры функции, которая возвращает массив указателей структуры в C? - PullRequest
0 голосов
/ 02 июня 2019

Мне нужна функция для возврата массива указателей на структуры. Какой синтаксис для этого? Концептуально я думаю struct my_struct *[] create_my_struct_table(int arr[], size_t length); Но это не работает. Я не пытаюсь вернуть массив struct my_struct, а скорее массив struct my_struct *.

Ответы [ 2 ]

3 голосов
/ 02 июня 2019

Вы не можете вернуть массив в C. Вы можете вернуть struct, который содержит массив (который может быть массивом указателей).Вы также можете вернуть указатель на массив, срок жизни которого должен быть больше, чем у функции, которая его возвращает, например, статический массив или возвращенный из calloc().Если он выделен динамически, вызывающая сторона должна освободить его один раз и только один раз.Или вызывающая сторона может выделить массив назначения и передать его адрес в качестве выходного параметра.

0 голосов
/ 02 июня 2019
struct mystruct ** foo(struct mystruct **arrayOFpointers)
{

    int i =0;
    while(arrayOFpointers[i] != NULL)
    {
        //do something with *arrayOFpointers[i]
        i++;
    }
    return arrayOFpointers;
}
int main()
{
    int n = 10; // size
    struct mystruct *pointers[n];
    pointers[0] = (struct mystruct*)malloc(sizeof(struct mystruct));
    //allocate all other pointers in the array like this

    struct mystruct *processed_Pointers[n];

    processed_Pointers = foo(pointers);
return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...