Buon pomeriggio a tutti e grazie delle risposte.
allora vediamo se ho capito o meno.
int(*una)(int)
una e' una variabile di tipo puntatore che punta a una funzione che ha in ingresso un intero e restituisce un intero
int(*tre[3])(int)
tre e' un vettore i cui elementi sono puntatori ciascuno dei quali punta a una funzione che ha in ingresso un intero e restituisce un intero
int(*tre_bis[3])(int,float)
tre_bis e' un vettore i cui elementi sono puntatori ciascuno dei quali punta a una funzione e questa funzione ha in ingresso un intero e un float
quindi e' come se scrivessi
int(*tre_bis[0])(int,float)
int(*tre_bis[1])(int,float)
int(*tre_ter[2])(int,float)
ora se tutto quello di cui sopra e' corretto, nella fase di inizializzazione del puntatore a funzione posso scrivere
int(*tre_bis[3])(int,float)={f0,f1,f2};
il che equivale a scrivere
int(*tre_bis[0])(int,float)=f0;
int(*tre_bis[1])(int,float)=f1;
int(*tre_bis[2])(int,float)=f2;
a patto che f0,f1,f2 siano funzioni che ricevono in ingresso un int e un float e restituiscono un int.
mi concedo licenza di proseguire con l'immunita' del dubbio.
la mia domanda inziale era di questo tipo.
e' possibile scrivere questo che sto scrivendo qui sotto?
int(*tre_ter[0])(int,float,chart)=f0;
int(*tre_ter[1])(int,float,*chart)=f1;
int(*tre_ter[2])(int,float)=f2;
e se si come dovrebbe essere scritto
int(*tre_bis[3])(int,float,????????)
ora nel mio primo listato in cima alla pagina avevo una situazione del genere; due funzioni ed il main che le richiamava con il puntatore a funzione.
int f1 (void)
int f2 (int)
sopra f 1 e' senza argomenti e ritorna un intero ed f 2 che aveva in ingresso l'intero ritornato da f 1 e ritornava a sua volta un intero.
ora nella main quando ho scritto la sintassi del puntatore a queste due funzioni ho scritto qualcosa del genere
int (*puntatore[2]) (void,int) ={f1,f2};
e il risultato della compilazione mi restituiva un errore; in pratica cercavo di scrivere una qualche sintassi che rispondesse a quella scritta con i punti interrogativi di cui sopra e mi sembra di aver capito che in C non e' consentito fare cio', il caso che funziona e' quello del tre_bis.
ora leggendo la risposta di migliorabile, credo di aver capito quello che lui cerca di dirmi; concordo anche sul primo esempio di debolezza da lui citato.
sul secondo esempio di debolezza da lui citato credo di non seguirlo piu'; il motivo e' il seguente: nel mio primo listato ho creato una funzione void che restituisce un intero e poi ho usato questo valore nella funzione successiva, in questa funzione lo stesso valore compariva nei parametri; in definitiva quest'ultima parte a cui migliorabile fa riferimento mi e' piuttosto oscura.
se qualcuno volesse provare ad aggiungere qualcosa riguardo questo punto sarebbe un grosso aiuto.
per il momento grazie.