Des tableaux de pointeurs de fonction peuvent être créés comme suit:
typedef void(*FunctionPointer)();
FunctionPointer functionPointers[] = {/* Stuff here */};
Quelle est la syntaxe pour créer un tableau de pointeurs de fonction sans utiliser le typedef
?
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
donc votre réponse est
void (* arr [])() = {};
Mais naturellement, c'est une mauvaise pratique, utilisez simplement typedefs
:)
Extra: Je me demande comment déclarer un tableau de 3 pointeurs vers des fonctions prenant int et renvoyant un pointeur vers un tableau de 4 pointeurs aux fonctions prenant le double et retournant le caractère? (c'est cool, hein? :))
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
:))
Rappelez-vous que "la délimitation imite l'utilisation" Donc, pour utiliser ce tableau, vous diriez
(*FunctionPointers[0])();
Correct? Par conséquent, pour le déclarer, vous utilisez le même:
void (*FunctionPointers[])() = { ... };
Utilisez ceci:
void (*FunctionPointers[])() = { };
Fonctionne comme tout le reste, vous placez [] après le nom.