So che quando si utilizza il nome di una funzione come valore, la funzione viene automaticamente convertita in un puntatore. un'occhiata al seguente codice:assegnazione del puntatore a funzione e chiamata in C++?
int print(int a)
{
return a;
}
int main()
{
int (*p)(int) = print;
int (*q)(int) = &print;
cout << p(8) << endl;
cout << (*p)(8) << endl;
}
perché sono int (*p)(int) = print;
, stampa è un puntatore, e int (*p)(int) = &print;
, & stampa è un indirizzo a un puntatore, equivalente?
D'altra parte, quando si utilizza un puntatore a una funzione per chiamare la funzione, perché sono p(8)
e (*p)(8)
equivalenti?
Credo che è solo per convenienza , che non è necessario deferire esplicitamente i puntatori alle funzioni quando li si utilizza per chiamare la funzione. Se usi 'typedefs' puoi lavorare con il puntatore a funzione senza usare' * 'quale imho è abbastanza bello – user463035818
Possibile duplicato di [Come si verifica il dereferenziamento di un puntatore a funzione?] (Http://stackoverflow.com/questions/2795575/how-fa-dereferencing-of-a-function-pointer-happen) –
@SimonKraemer grazie. Ma il collegamento spiega solo il dereferenziamento, la mia domanda include anche l'assegnazione del puntatore a funzione. – sydridgm