Punteros

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.

Veamos un ejemplo: de un arreglo de punteros que apuntan a funciones.

#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);


Que es un anuncio - Gestion.OrgVer 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]