Подтвердить что ты не робот

Какова функция звездочки перед именем функции?

Я был смущен тем, что я вижу в большинстве программ на C, у которых есть незнакомое объявление функции для меня.

void *func_name(void *param){
    ...
}

Что означает * для функции? Мое понимание о (*) в переменном типе состоит в том, что он создает указатель на другую переменную, таким образом, он может отслеживать, какой адрес, на котором последняя переменная хранится в памяти. Но в этом случае функции я не знаю, что подразумевает эта звездочка *.

4b9b3361

Ответ 1

Звездочка относится к типу возвращаемого значения, а не к имени функции, то есть:

void* func_name(void *param) { . . . . . }

Это означает, что функция возвращает указатель на void.

Ответ 2

* относится к типу возврата функции, который равен void *.

Когда вы объявляете переменную-указатель, это то же самое, что и тег * близок к имени переменной или типу переменной:

int *a;
int* a;

Я лично считаю первый выбор более понятным, потому что, если вы хотите определить несколько указателей с помощью разделителя ,, вам придется каждый раз повторять *:

int *a, *b;

Использование синтаксиса "близко к типу" может быть введено в заблуждение в этом случае, потому что если вы пишете:

int* a, b;

Вы объявляете указатель на int (a) и int (b).

Итак, вы также найдете этот синтаксис в возвращаемых функциях!

Ответ 3

* относится к типу возврата. Эта функция возвращает void *, указатель на некоторое расположение памяти неопределенного типа.

Указатель - это тип переменной сам по себе, который имеет адрес некоторой ячейки памяти в качестве ее значения. Различные типы указателей в C представляют разные типы, которые вы ожидаете находиться в памяти, на которую ссылается переменная указателя. Таким образом, ожидается, что int * будет ссылаться на местоположение, которое может быть интерпретировано как int. Но void * - это тип указателя, который относится к местоположению памяти неуказанного типа. Вам нужно будет указать такой указатель на пустоту, чтобы иметь доступ к данным в ячейке памяти, на которую он ссылается.

Ответ 4

Это означает, что функция возвращает void*.