#include <cstdio>
#include <cstdlib>
#include <cstring>
// Función
void imprimeValor( int valor ) {
printf( "Valor es: %dn", valor
); }
// Una estructura con un miembro que es un puntero a función
struct Prueba {
int x;
void ( *ptrFunc )( int );
};
// Función que recibe como parámetro otra función y una variable int
void ejecutaFuncion( void ( *ptr )( int ), int valor ) {
// Ejecuta la función recibida como parámetro pasando el segundo parámetro recibido
// como parámetro para la función llamada
ptr( valor );
}
int main() {
// Crea una instancia de Prueba
Prueba miPrueba;
// El miembro ptrFunc apunta a imprimeValor
miPrueba.ptrFunc = imprimeValor;
// Ejecuta imprimeValor mediante la variable miembro ptrFunc
miPrueba.ptrFunc( 10 );
// Pasa imprimeValor como parámetro
ejecutaFuncion( imprimeValor, 13 );
return 0;
}