arr //arr
arr [] //is an array (so index it)
* arr [] //of pointers (so dereference them)
(* arr [])() //to functions taking nothing (so call them with())
void (* arr [])() //returning void
por lo que su respuesta es
void (* arr [])() = {};
Pero, naturalmente, esto es una mala práctica, sólo tiene que utilizar typedefs
:)
adicional: pregunta cómo declarar una matriz de 3 punteros a las funciones que toman int y regresan un puntero a una matriz de 4 punteros a las funciones que toman el doble y vuelven a char? (¿No es genial, ¿eh? :))
arr //arr
arr [3] //is an array of 3 (index it)
* arr [3] //pointers
(* arr [3])(int) //to functions taking int (call it) and
*(* arr [3])(int) //returning a pointer (dereference it)
(*(* arr [3])(int))[4] //to an array of 4
*(*(* arr [3])(int))[4] //pointers
(*(*(* arr [3])(int))[4])(double) //to functions taking double and
char (*(*(* arr [3])(int))[4])(double) //returning char
:))
Interesante pregunta, pero en código "real" que sólo debe seguir la regla de oro de los punteros de función: usar 'typedef' de lo contrario nadie va a ser capaz de entender su código . ':)' –