Указатель на возврат функции - PullRequest
0 голосов
/ 22 марта 2012

Предположим следующий прототип функции:

void *function(int arg).

Это указатель на функцию? Если так, как это может возвратить значение, если его тип возврата void? В описании функции сказано, что она может возвращать положительное целое число или NULL. Поскольку это два разных «типа», это будет причиной того, что это void? Чтобы избежать переписывания?

Ответы [ 5 ]

3 голосов
/ 22 марта 2012

Нет, это не указатель на функцию.Это функция, которая возвращает void *, также известный как универсальный указатель.

Указатель на функцию, которая возвращает void, будет выглядеть так:

void (*function)(int arg);

И , что функция не будет ничего возвращать.

2 голосов
/ 22 марта 2012

Это не указатель на функцию.Он говорит, что возвращает пустой указатель.Преимущество функции, возвращающей void *, состоит в том, что вы можете привести ее к любому типу функции.См. здесь для объяснения.

0 голосов
/ 22 марта 2012
void *function(int arg);

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

0 голосов
/ 22 марта 2012

Нет, это прототип, указывающий, что функция function принимает один аргумент int и возвращает значение void *.

Указатель на функцию будет выглядеть так:

void *(*fn)(int arg);

Это создает указатель fn, который указывает на функцию, соответствующую свойствам function.

0 голосов
/ 22 марта 2012

Это не указатель на функцию;это функция, которая возвращает указатель на void: то есть недифференцированный указатель на необработанную память.Указатель на функцию, возвращающую void, будет void (*function)(int arg) - эти скобки полностью меняют значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...