Как передать и вернуть указатель с main в C - PullRequest
0 голосов
/ 23 сентября 2019

Я пишу общий объект (.so) в C и хочу передать указатель на массив в программу и передать указатель на другой массив обратно вызывающей функции.

Моя основная подпись:

int main(int argc, char **argv)

Однако я хочу передать указатель на массив, а в C это не сделано так, как функции работают в некоторых других языках -например, функция (* data).

Мои вопросы:

  1. Как передать указатель массива?

  2. Как передать указатель массива обратно?

Я новичок в C (из других языков).Я исследовал это в течение некоторого времени, и все примеры показывают передачу и возврат указателя из внутренней функции, отличной от главной функции.Полезное исследование, которое я видел, говорит, что невозможно вернуть указатель из main, но есть ли способ динамически распределить (malloc) память в общем объекте и вернуть ее вызывающей стороне?

Спасибо за любую помощь в этом.

1 Ответ

0 голосов
/ 23 сентября 2019

Чтобы передать массив и выйти из него:

int arr[6];

void putarr(int x[6])
{
    memcpy(arr, x, sizeof(arr));
}

void *getarr(void)
{
    return arr;
}

Если вы действительно хотите передать указатель на массив (это то же самое, что массив, но более проблематично)), используйте эту функцию:

void (*getarr_p(void))[6]
{
    return &arr;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...