logo

Puntero de función en C++

Requisitos previos:

Los punteros son representaciones simbólicas de direcciones. Permiten que los programas simulen llamadas por referencia, así como también creen y manipulen estructuras de datos dinámicas. Iterar sobre elementos en matrices u otras estructuras de datos es uno de los usos principales de los punteros.

La dirección de la variable con la que está trabajando se asigna a la variable de puntero que apunta al mismo tipo de datos (como un int o una cadena).



Sintaxis :

datatype *var_name;>

Dirección de Función: Todos sabemos que el código de cada función reside en la memoria, por lo que cada función tiene una dirección como todas las demás variables del programa. El nombre de una función se puede utilizar para encontrar la dirección de la función. Podemos obtener la dirección de una función simplemente escribiendo el nombre de la función sin paréntesis en la función.

Para saber más sobre esto, consulte el artículo – dirección de la función.

Puntero de función en C++

  • El puntero de función se usa para señalar funciones, de manera similar, los punteros se usan para señalar variables.
  • Se utiliza para guardar la dirección de una función.
  • El puntero de función se usa para llamar a la función o se puede enviar como argumento a otra función.
Puntero de función en C++

Puntero de función en C++

Sintaxis :

return_type (*FuncPtr) (parameter type, ....);>

Referenciación y desreferenciación del puntero de función en C++

De manera similar al puntero utilizado con variables, realizamos referencias y desreferenciaciones con un puntero de función.

Referenciando: Cuando al puntero se le asigna la dirección de la función que se asociará con él, este proceso se denomina referencia.

Desreferenciación: Cuando usamos el operador (*) para obtener el valor almacenado en el puntero.

Sintaxis:

cómo saber el tamaño de la pantalla
// Declaring return_type (*FuncPtr) (parameter type, ....); // Referencing FuncPtr= function_name; // Dereferencing data_type x=*FuncPtr;>

Puntero de función utilizado para llamar a la función.

En esto, vemos cómo apuntamos un puntero a una función y la llamamos usando ese puntero. Es una forma eficaz de utilizar

Ejemplo:

C++




// C++ program to implementation> // Function Pointer> #include> using> namespace> std;> int> multiply(>int> a,>int> b) {>return> a * b; }> int> main()> {> >int> (*func)(>int>,>int>);> >// func is pointing to the multiplyTwoValues function> >func = multiply;> >int> prod = func(15, 2);> >cout <<>'The value of the product is: '> << prod << endl;> >return> 0;> }>

>

>

Producción

The value of the product is: 30>

En el programa anterior, declaramos una función multiplicar donde multiplicamos dos elementos a y b y luego devolvemos el resultado. Pero, en lugar de llamar directamente a la función, estamos usando un puntero de función que hace el mismo trabajo por nosotros.

Pasar un puntero de función como parámetro

Al declarar un puntero de función para almacenar la dirección de memoria de la función pero, cuando queremos pasar el valor de retorno a la siguiente función. Disponemos de dos métodos para realizar esta tarea. Primero, pase el valor que obtuvimos o, en segundo lugar, pase el puntero de función que ya existe.

Ejemplo:

C++




// C++ Program for demonstrating> // function pointer as pointer> #include> using> namespace> std;> const> int> a = 15;> const> int> b = 2;> // Function for Multiplication> int> multiply() {>return> a * b; }> // Function containing function pointer> // as parameter> void> print(>int> (*funcptr)())> {> >cout <<>'The value of the product is: '> << funcptr()> ><< endl;> }> // Driver Function> int> main()> {> >print(multiply);> >return> 0;> }>

barra de herramientas de acceso rápido de ms word
>

>

Producción

The value of the product is: 30>

Complejidad del tiempo: O(1).
Espacio auxiliar: O(1).

En el programa anterior, declaramos una función de multiplicación en la que multiplicamos 2 variables a y b. Estamos pasando el puntero de función como parámetro en la función de impresión, aquí usamos el puntero de función para calcular el valor de la función de multiplicar y luego ese valor en la función de impresión.