вызов функции с различной семантикой

Рассматривая этот код с семантикой вызова функции с 3-мя отличиями:

void f(void){
   puts("OK");
}

int main(void){
   f();
  (*f)();
  (&f)();

  return 0;
}

Первый - это стандартный способ вызова f,

вторая семантика для разыменования указателей на функции,

но в третьем я применяю & amp; оператор на имя функции и, кажется, работает нормально.

Что происходит во втором и третьем случае?

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос