Foros del Web » Programación para mayores de 30 ;) » C/C++ »

EN C -Declaración de función extraña, puntero a función.

Estas en el tema de EN C -Declaración de función extraña, puntero a función. en el foro de C/C++ en Foros del Web. Es posible que alguien me pueda explicar la declaración comentada en el siguiente código, Gracias. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original #include <stdio.h>   int ...
  #1 (permalink)  
Antiguo 01/10/2012, 19:00
 
Fecha de Ingreso: julio-2009
Mensajes: 36
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta EN C -Declaración de función extraña, puntero a función.

Es posible que alguien me pueda explicar la declaración comentada en el siguiente código, Gracias.

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main(int argc,char *argv[]){
  4. int i,j;
  5. char eleccion;
  6. int proceso (int (*)(int,int)); //prototipo... de la función que no entiendo
  7. int multip (int,int);
  8. int divicion (int,int);
  9. printf("Elige M(6*3) o D (6/3):");
  10. scanf ("%c",&eleccion);
  11. if (eleccion=='M') i=proceso (multip);
  12. else i=proceso (divicion);
  13. printf ("El resultado es: %d\n",i);
  14. return 0;
  15. }
  16.  
  17. int proceso (pf) int (*pf)(int,int);{ /*El punto y coma junto con la falta de un paréntesis global es lo que mas me confunde. y no veo a simple vista la igualdad del prototipo D:*/
  18. int a=6,b=3,c;
  19. c=(*pf)(a,b);
  20. return c;
  21. }
  22. int multip(int a,int b){
  23. return(a*b);
  24. }
  25. int divicion(int a,int b){
  26. return (a/b);
  27. }

Última edición por m4rc05; 01/10/2012 a las 21:01
  #2 (permalink)  
Antiguo 01/10/2012, 21:06
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 9 meses
Puntos: 22
Respuesta: Declaración de función extraña, puntero a función.

Lo primero:
Código C:
Ver original
  1. int proceso (int (*)(int,int));

Es el prototipo de la función proceso, que recibe como parámetro un puntero a una función que tiene 2 parámetros de tipo int y cuyo valor de retorno tambien es un int. Ejemplo: proceso(multip);

Código C:
Ver original
  1. int proceso (pf) int (*pf)(int,int);
  2. {
  3.     /*El punto y coma junto con la fata de un paréntesis global es lo que mas me confunde.*/
  4.     int a=6,b=3,c;
  5.     c=(*pf)(a,b);
  6.     return c;
  7. }

Es la vieja sintaxis utilizada por K&R antes del ANSI C, aquí algo de info.

Etiquetas: extraña, int, puntero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:54.