Duplicar posibles:
How does dereferencing of a function pointer happen?función de puntero - eliminación de referencias automática
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);
}
Puede alguien explicarme por qué todo el código anterior es válido? "hola" se imprimió cuatro veces. Al aplicar el puntero a la función, ¿está implícitamente desbocado? Básicamente, quiero saber cómo se almacenan los punteros a las funciones, porque lo anterior es un poco confuso.
'(****** prueba) (s)' también es válido :-) – sidyll
Ver esta pregunta anterior: http://stackoverflow.com/questions/2795575/how-does-dereferencing-of-a -function-pointer-happen –
Las funciones y los punteros a las funciones son especiales, su tratamiento no es uniforme con ningún otro tipo de puntero. Consulte [¿Cómo ocurre la desreferenciación de un puntero a la función?] (Http://stackoverflow.com/q/2795575/2509) y otras preguntas en la barra lateral. – dmckee