Punteros
Condições de conclusão
17. Arreglos de Punteros a funciones (informativo)
Arreglos de Punteros a funciones
Para hablar de punteros a funciones, previamente hay que establecer que las funciones tengan "dirección", es decir al momento de compilar el código va a para a un lugra de la memoria, esa dirección o lugar es donde vamos a apuntar el puntero.
Al igual que el nombre de un arreglo representa un puntero al primer elemento de un arreglo, el nombre de la función sería el puntero a donde comienza el código de la función.
Técnicamente un puntero-a-función es una variable que guarda la
dirección de comienzo de la función.
#include <iostream>
using namespace std;
int suma(int,int);
int producto(int,int);
int main()
{
int (*pf[2])(int,int); // Array de punteros a funcion con arg. int
int e1,e2;
int opc;
pf[0] = suma; //Inicializo el 1er elemento del arreglo ahora apunta
// a funcion suma
pf[1] = producto; //Inicializo el 2do elemento del arreglo ahora apunta
// a funcion a product
cout<<"Por favor Ingrese un entero : ";
cin>>e1
cout<<"Por favor Ingrese otro entero : ";
cin>>e2;
cout<<"Ingrese 0 para sumar o 1 para multiplicar : "<<endl;
cin>>opc;
if((opc==0)||(opc==1)) cout<<pf[opc](e1,e2);
else cout<<"opcion Incorrecta"
return 0;
}
//Funciones
int suma(int x, int y){return (x+y);}
int producto(int x, int y){return (x*y);
Ver que se tiene el mismo beneficio que cuando se usa arreglos, no tenemos que usar el NOMBRE de la función para hacer referencia, solo un indice:
pf[opc]