Что означает 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)()
,