elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Ventajas de un puntero a una función?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿Ventajas de un puntero a una función?  (Leído 5,976 veces)
David8

Desconectado Desconectado

Mensajes: 50


Ver Perfil
¿Ventajas de un puntero a una función?
« en: 5 Abril 2014, 20:26 pm »

Pues eso, quería saber cual es la ventaja de usar una función con una llamada normal, por ejemplo funcion(10) a hacerlo con un puntero a una función, por ejemplo ( siendo la decalaración void (*ptrF) (int x); )  x=ptrF(10)


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: ¿Ventajas de un puntero a una función?
« Respuesta #1 en: 5 Abril 2014, 20:46 pm »

Pues que puedes crear una función que llame a otra función que no sabes ni como es ;D

Suponte que yo hago una librería para trabajar con imagenes BMP. Mi librería es capaz de leer un archivo bmp, descodificarlo y coger los datos de la imagen.

Pintarla es un tema que depende de la librería gráfica que se use en el momento. Como quiero que sea general me hago una función pintartal que así:

Código
  1. void pintar(void (*ptrF) (int) ptrf);

El usuario que use mi librería, puede pintar la imagen con esta función independientemente de la plataforma y de la librería gráfica que use. Solo necesita que pasar la función que él usa para pintar un pixel en la pantalla.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: ¿Ventajas de un puntero a una función?
« Respuesta #2 en: 5 Abril 2014, 20:51 pm »

No es que tenga unas "ventajas" determinadas, sinó que tiene otros usos, y abre otras posibilidades.

Palabras del profesor Oak: "Usa cada cosa en su momento." :D
En línea

David8

Desconectado Desconectado

Mensajes: 50


Ver Perfil
Re: ¿Ventajas de un puntero a una función?
« Respuesta #3 en: 6 Abril 2014, 12:47 pm »

Pues que puedes crear una función que llame a otra función que no sabes ni como es ;D

Suponte que yo hago una librería para trabajar con imagenes BMP. Mi librería es capaz de leer un archivo bmp, descodificarlo y coger los datos de la imagen.

Pintarla es un tema que depende de la librería gráfica que se use en el momento. Como quiero que sea general me hago una función pintartal que así:

Código
  1. void pintar(void (*ptrF) (int) ptrf);

El usuario que use mi librería, puede pintar la imagen con esta función independientemente de la plataforma y de la librería gráfica que use. Solo necesita que pasar la función que él usa para pintar un pixel en la pantalla.

Muchas gracias. Tendré que investigar más sobre el tema.
Una última cosa, ¿una llamada a una función con un puntero a función es más rápida que una llamada "normal"?
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: ¿Ventajas de un puntero a una función?
« Respuesta #4 en: 6 Abril 2014, 12:59 pm »

No.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: ¿Ventajas de un puntero a una función?
« Respuesta #5 en: 6 Abril 2014, 13:10 pm »

Un ejemplo de uso:
Código
  1. void himno();
  2. void pacman();
  3. void tetris();
  4.  
  5. int main(int args, char **argc){
  6.    void (*funcs[])()={himno,pacman,tetris}; //Arreglo de funciones
  7.    cout << "Qué cancion deseas escuchar?" << endl;
  8.    cout << "1: Himno" << endl;
  9.    cout << "2: Pacman" << endl;
  10.    cout << "3: Tetris" << endl;
  11.    string t;
  12.    cin >> t;
  13.    cout << endl;
  14.    if(t.size()==0) t='1'; //Evitar problemas en entrada
  15.  
  16.    funcs[(t[0]-'1')%3](); //Llamamos a la función. "(t[0]-'1')%3" es solo para evitar que salga del rango 0-2
  17.  
  18.    return 0;
  19. }
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: ¿Ventajas de un puntero a una función?
« Respuesta #6 en: 6 Abril 2014, 13:17 pm »

¿Por que lees un string y no un entero?
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: ¿Ventajas de un puntero a una función?
« Respuesta #7 en: 6 Abril 2014, 13:31 pm »

Para evitar errores.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: ¿Ventajas de un puntero a una función?
« Respuesta #8 en: 6 Abril 2014, 13:35 pm »

Para eso tienes cin.good()
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: ¿Ventajas de un puntero a una función?
« Respuesta #9 en: 6 Abril 2014, 13:35 pm »

Pero con string lo hago más rápido C:
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines