2012-03-22 5 views
0

Предположительно следующий прототип функции:Указатель на функцию Возврат

void *function(int arg).

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

+0

Он не может вернуть положительное целое число. Он возвращает указатель (который может быть указателем NULL). – Celada

ответ

2

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

0

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

0
void *function(int arg); 

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

0

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

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

void *(*fn)(int arg); 

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

3

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

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

void (*function)(int arg); 

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