Perché e in che modo il dereferenziamento di un puntatore a funzione non fa "niente"?Come avviene il dereferenziamento di un puntatore a funzione?
Questo è ciò di cui sto parlando:
#include<stdio.h>
void hello() { printf("hello"); }
int main(void) {
(*****hello)();
}
Da un commento su here:
puntatori a funzione dereference solo bene, ma la risultante funzione di designatore sarò subito convertito in un puntatore di funzione
E da una risposta here:
Dereferenziare (nel senso che pensate) puntatore di una funzione significa: l'accesso a una memoria codice come sarebbe un memoria dati.
Il puntatore di funzione non deve essere interpretato come in questo modo. Invece, si chiama .
Vorrei utilizzare un nome "dereferenziazione" lato a fianco con "chiamata". Va bene.
Comunque: C è stato progettato in modo tale che entrambi Identificatore funzione così come puntatore di funzione di tenuta variabile significa lo stesso: indirizzo CODE memoria. E consente di passare alla memoria utilizzando la sintassi call() o su un identificatore o una variabile.
Come esattamente fa dereferenziazione di un'opera puntatore a funzione?
Potresti per favore approfondire "... implicitamente convertito in un puntatore al valore della funzione originale"? Ti riferisci al valore di ritorno della funzione? In tal caso, vuol dire che il compilatore mantiene automaticamente il valore di ritorno come un lvalue, sebbene il valore di ritorno della funzione fosse un valore. Grazie! – shorttermmem