Está en la página 1de 8

PUNTEROS A

FUNCIONES
 
PUNTEROS A FUNCIONES 
Un apuntador es lo mismo que un puntero, de hecho, apuntadores es bastante
más raro encontrarlo. La traducción que se ha dado por correcta ha sido puntero
y actualmente casi todos los manuales tendrán escrito puntero.
Un apuntador a una función contiene la dirección a la función en la memoria. El
nombre de una función es en realidad la dirección inicial en memoria del código
que realiza la tarea de la función. Los apuntadores a funciones se pueden pasar
a las funciones, devolver de las funciones, almacenar en arreglos, asignar a otros
apuntadores a funciones y usarse para llamar a la función subyacente.
Declaración de una función

Int una_funcion(int parámetro);

Declaración de puntero a una función

Int (*puntero_a_una_funcion) (int);


Calcular la suma de dos números:
#include <iostream>
using namespace std;
 
int suma(int a,int b);
 
int main(int argc, char *argv[]) {
int (*funcion)(int,int)=(suma);
int a,b;
cout<<"Ingrese a: ";
cin>>a;
cout<<"Ingrese b: ";
cin>>b;
cout<<"La suma es: "<<(funcion)(a,b)<<endl;
return 0;
}
 
int suma(int a,int b)
{
return a+b;
}
 
 
Arreglos de apuntadores a funciones

Uno de los usos de los apuntadores a funciones está en los sistemas


controlados por menús. Por ejemplo, un programa podría pedir a un usuario
que seleccionara una opción de un menú, introduciendo un valor entero. La
elección del usuario se puede usar como subíndice en un arreglo de
apuntadores a funciones, y el apuntador en el arreglo se puede utilizar para
llamar a la función.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
// prototipos de funciones -- cada función realiza acciones
similares
void funcion0( int );
void funcion1( int );
void funcion2( int );
 
int main()
{
// inicializa un arreglo de 3 apuntadores a funciones,
cada una
// de las cuales recibe un argumento int y devuelve
void
void (*f[ 3 ])( int ) = { funcion0, funcion1, funcion2 };
int opcion;
cout << "Escriba un numero entre 0 y 2, 3 para
terminar: ";
cin >> opcion;
// procesa la opción del usuario
while ( ( opcion >= 0 ) && ( opcion < 3 ) )
{
// invoca la función en la selección de ubicación en
// el arreglo f y pasa la opción como un argumento
(*f[ opcion ])( opcion );
cout << "Escriba un numero entre 0 y 2, 3 para
terminar: ";
cin >> opcion;
} // fin de while
cout << "Se completo la ejecucion del programa." <<
endl;
return 0; // indica que terminó correctamente
} // fin de main
 
void funcion0( int a )
{
cout << "Usted escribio " << a << " por lo que se
llamo a la funcion0\n\n";
} // fin de la función funcion0
 
void funcion1( int b )
{
cout << "Usted escribio " << b << " por lo que se
llamo a la funcion1\n\n";
} // fin de la función funcion1
 
void funcion2( int c )
{
cout << "Usted escribio " << c << " por lo que se
llamo a la funcion2\n\n";
} // fin de la función funcion2

También podría gustarte