Los apuntadores a funciones en C son una característica poderosa que permite almacenar direcciones de funciones y llamarlas dinámicamente. Vamos a explorar cómo trabajar con apuntadores a funciones y algunos ejemplos para entender su uso.
Declaración de un Apuntador a Función
La declaración de un apuntador a función sigue la sintaxis:
tipo_retorno (*nombre_apuntador)(tipo_argumento1, tipo_argumento2, ...);
`tipo_retorno` es el tipo de dato que devuelve la función.
`nombre_apuntador` es el nombre del apuntador a función.
`tipo_argumento1`, `tipo_argumento2`, etc., son los tipos de argumentos que acepta la función.
Asignación de una Función a un Apuntador
#include <stdio.h>
void miFuncion(int valor) {
printf("Valor recibido: %d\n", valor);
}
int main() {
void (*apuntadorFuncion)(int); // Declaración de un apuntador a función
apuntadorFuncion = miFuncion; // Asignación de la función
// Llamada a la función a través del apuntador
apuntadorFuncion(42);
return 0;
}
Uso de Apuntadores a Funciones en Estructuras
#include <stdio.h>
typedef struct {
int (*operacion)(int, int);
} Calculadora;
int suma(int a, int b) {
return a + b;
}
int resta(int a, int b) {
return a - b;
}
int main() {
Calculadora calc;
calc.operacion = suma;
int resultado = calc.operacion(10, 5);
printf("Resultado: %d\n", resultado);
// Cambiamos la operación a resta
calc.operacion = resta;
resultado = calc.operacion(10, 5);
printf("Resultado: %d\n", resultado);
return 0;
}
Apuntadores a Funciones como Parámetros
#include <stdio.h>
int suma(int a, int b) {
return a + b;
}
int resta(int a, int b) {
return a - b;
}
void operar(int (*operacion)(int, int), int a, int b) {
int resultado = operacion(a, b);
printf("Resultado: %d\n", resultado);
}
int main() {
operar(suma, 10, 5);
operar(resta, 10, 5);
return 0;
}
Estos ejemplos te brindan una introducción a trabajar con apuntadores a funciones en C. Puedes utilizarlos para crear código más dinámico y flexible.