Introducción
Un puntero a una función es una forma de almacenar la dirección de memoria de una función, al igual que una variable almacena la dirección de memoria de un valor. Cuando una función es llamada a través de un puntero, se denomina puntero a una función.
En este laboratorio, escribiremos un programa en C para demostrar cómo utilizar un puntero a una función.
Declarar y definir la función a la que se apuntará
En este paso, declararemos y definiremos una función que toma dos argumentos enteros y no devuelve nada.
#include<stdio.h>
void func(int a, int b)
{
printf("\n\n a = %d \n", a);
printf("\n\n b = %d \n", b);
}
Declarar un puntero a una función
En este paso, declararemos un puntero a la función creada en el paso 1. La sintaxis para declarar un puntero a una función es similar a la de declarar un puntero a una variable, pero especifica los tipos de parámetros y el tipo de retorno de la función a la que se apunta.
// function pointer
void (*fptr)(int, int);
Almacenar la dirección de la función en el puntero
En este paso, almacenaremos la dirección de la función creada en el paso 1 en el puntero creado en el paso 2.
// assign address to function pointer
fptr = func;
Llamar a la función utilizando el puntero
En este paso, llamaremos a la función que creamos en el paso 1 utilizando el puntero a la función creado en el paso 2.
// function calling
func(2,3);
fptr(2,3); // calling a function referring to pointer to a function
Escribe el código completo
Abra el archivo main.c en el directorio ~/project/.
#include<stdio.h>
void func(int a, int b)
{
printf("\n\n a = %d \n", a);
printf("\n\n b = %d \n", b);
}
int main()
{
printf("\n\n\t\tLabEx - Best place to learn\n\n\n");
// function pointer
void (*fptr)(int, int);
// assign address to function pointer
fptr = func;
// function calling
func(2,3);
fptr(2,3); // calling a function referring to pointer to a function
printf("\n\n\t\t\tCoding is Fun!\n\n\n");
return 0;
}
Compila y ejecuta el código
Para compilar el código, abra la terminal y escriba el siguiente comando:
gcc main.c -o main
Para ejecutar el programa, escriba el siguiente comando:
./main
Resumen
En este laboratorio, aprendimos cómo utilizar un puntero a una función en un programa C. Vimos cómo declarar y definir la función a la que se apuntará, cómo declarar un puntero a una función, cómo almacenar la dirección de la función en el puntero y cómo llamar a la función utilizando el puntero. El uso de punteros a funciones puede hacer que los programas complejos sean más fáciles de escribir y entender.



