Eventuali duplicati:
How does dereferencing of a function pointer happen?Puntatore Funzione - Dereferencing automatico
void myprint(char* x) {
printf("%s\n", x);
}
int main() {
char* s = "hello";
void (*test)(char*);
void (*test2)(char*);
test = myprint;
test2 = &myprint;
test(s);
(*test)(s);
test2(s);
(*test2)(s);
}
qualcuno può spiegare a me perché tutto il codice di cui sopra è valido? "ciao" viene stampato quattro volte. Applicando il puntatore alla funzione, è implicitamente escluso? Fondamentalmente voglio sapere come vengono effettivamente memorizzati i puntatori di funzione, perché quanto sopra è un po 'di confusione.
'(****** test) (s)' è valido anche :-) – sidyll
Vedere questa domanda precedente: http://stackoverflow.com/questions/2795575/how-does-dereferencing-of-a -function-pointer-happen –
Le funzioni e i puntatori di funzione sono speciali, il loro trattamento non è uniforme con nessun altro tipo di puntatore. Vedi [Come si verifica il dereferenziamento di un puntatore a funzione?] (Http://stackoverflow.com/q/2795575/2509) e altre domande nella barra laterale. – dmckee