No, è sbagliato .... dichiarando quel 'p' hai solamente dichiarato un puntatore a puntatore a funzione. Non hai allocato spazio per i 2 puntatori a funzione!!!! Quel 'p' non è inizializzato quindi ..... sai già cosa potrebbe succedere: un bel segmentation fault!Originariamente inviato da np2k
codice:void (**p)(int i); p[0] = function1; p[1] = function2; (*p[0])(4); (*p[1])(5);
La soluzione migliore (e più pulita) è quella di usare un typedef:
Inoltre lo standard "C" è molto "di maniche larghe" per quanto riguarda la chiamata di una funzione tramite puntatore, quindi puoi fare (*arrFunz[0]) (4); ma anche solo arrFunz[0] (4);.codice:typedef void (*PFN_MIAFUNZ) (int); int main (void) { PFN_MIAFUNZ arrFunz[2]; arrFunz[0] = function1; arrFunz[1] = function2; arrFunz[0] (4); arrFunz[1] (5); .... } ....