Llamada de función con diferentes semánticas.

Teniendo en cuenta este código con 3 semánticas de llamada de función diferentes:

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

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

  return 0;
}

La primera es la forma estándar de llamar f,

El segundo es el semántico para los punteros de la función de desreferenciación,

pero en el tercero estoy aplicando el operador & al nombre de la función y parece que funciona bien.

¿Qué sucede en el segundo y tercer caso?

Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta