Puntero a una función

CBeginner
Practicar Ahora

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.