void ( *signal( int signum, void (*handler)(int) ) ) (int)
E' una funzione che accetta come parametri :
1. un intero
2. un puntatore a funzione che accetta un intero e restituisce void.
e restituisce un puntatore a funzione che accetta un int e valore
ritorno void.
--------------------------------------------------------------------------------------------------
>int (*signal (int sig, void (*funz) (int)))(int);
>
>la dscrizione dice che signal è una funzione che restituisce un puntatore (e
>questo è chiaro ed evidente) ma poi dice che questo puntatore è ad una
>funzione che restituisce un intero (mentre funz nella chiamata è dichiarata
>void)
>
>Infine non capisco davvero il enso di (int) alla fine del costrutto
Leggi la dichiarazione come se fosse:
int (*signal(a,b))(int);
Per ora non ti interessa sapere cosa siano a e b.
Le parentesi attorno ad a e b hanno precedenza maggiore
rispetto all'asterisco, per cui, dato:
k = signal(a,b)
si puo' scrivere:
int (*k)(int);
k e', banalmente, un puntatore a funzione che accetta un
intero e restituisce un intero.
Ma k e' il risultato della signal(a,b), per cui si puo' dire
che "signal e' una funzione che accetta a e b e restituisce
un puntatore a funzione che accetta un intero e restituisce
un intero".
Adesso, banalmente, risolvi a e b, dicendo che :
"signal e' una funzione che accetta un intero (a) e un
puntatore a funzione che accetta un intero e non restituisce
nulla (b) e restituisce un puntatore a funzione che accetta
un intero e restituisce un intero".
");
//-->