Что означает void*(*void)(void*)?

И какая разница между

void*(*void)(void*) 

а также

void*(*voi)(void*)

а когда его использовать?

1 ответ

Решение

Что ж void*(void)(void) не компилируется, потому что пытается объявить функцию, которая возвращает void * с именем void, и вы не можете использовать ключевые слова языка в качестве имен.

Вы также не можете объявить int с именем void (int void=5; не работает конечно).

Сейчас voi является действительным идентификатором, и вы можете назвать функцию voi,

Попытка получить то, что вы на самом деле спрашиваете разницу между.

void(*name)(void); а также void(name)(void); является то, что один объявляет функцию, а другой объявляет указатель на функцию.
На самом деле скобки на втором примере ничего не делают. void(name)(void); такой же как void name(void);,

Однако при объявлении указателей на функции необходимы скобки или * будет привязан слева к типу возврата.

В любом случае, я не уверен, что именно вы спрашиваете, поэтому лучше всего поискать на сайте другие вопросы, касающиеся указателей функций. Как этот, который также объясняет, почему с помощью void(name)(void) может отличаться от void(name)(),

Другие вопросы по тегам