вопрос:
в С заявляется, что производными типами являются структуры, массивы и функции
то есть, получается, функции являются значениями
тогда опять же, получается, что запись
int f(int);
должна означать создание переменной типа функции, с одним целым параметром и целым возвращаемым значением
тогда, почему недопускается следующая запись:
int g(int i){return i;}
f = g;// ошибка
и второй вопрос, почему, если объявляется указатель на функцию, то есть
int (*f)(int);
то валидна запись
f = g;
и при этом она оказывается равносильной
f = &g;
Так являются функции отдельным типом или это какие-то специальные объекты со своими правилами ??