¿Por qué y cómo desreferenciar un puntero a una función simplemente "no hacer nada"?¿Cómo ocurre la desreferenciación de un puntero de función?
Esto es lo que estoy hablando:
#include<stdio.h>
void hello() { printf("hello"); }
int main(void) {
(*****hello)();
}
Desde un comentario sobre here:
punteros de función eliminar la referencia simplemente bien, pero la función designador resultante será inmediatamente convertido de nuevo a un puntero de función
Y a partir de una respuesta here:
Desreferenciar (en la forma de pensar) del puntero de función significa: acceso a una memoria CÓDIGO ya que sería una memoria de datos.
Puntero a la función no debe ser desreferenciado de esa manera. En cambio, se llama .
Usaría un nombre "dereference" side junto con "call". Está bien.
De todos modos: C está diseñado de tal manera que tanto nombre de la función identificador como así como puntero de la función de mantenimiento variable significa lo mismo: la dirección de memoria de código . Y permite saltar a esa memoria utilizando la sintaxis de call() ya sea en un identificador o variable.
Cómo exactamente hace desreferencia de un puntero de función de trabajo?
¿Podría elaborar más sobre "... implícitamente convertido en un puntero al valor de la función original"? ¿Te refieres al valor de retorno de la función? Si es así, ¿significa que el compilador guarda automáticamente ese valor de retorno como valor l, aunque el valor de retorno de la función era un valor r? ¡Gracias! – shorttermmem