Your SlideShare is downloading. ×
Ejemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra función
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Ejemplo de paso de funciones como parámetros a otra función

5,637

Published on

Ejemplo en C++ de paso de una función a otra función

Ejemplo en C++ de paso de una función a otra función

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
5,637
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. EJEMPLO DE PASO DE FUNCIONES COMO PARÁMETROS A OTRA FUNCIÓN#include <iostream>#include <conio.h>char auxa(int posicion); // prototipo de auxavoid escribe (int posicion, char (* ptr)(int) ); // L.5: prototipo de escribeint main() { // ====================== char (* fptr) (int); // M.1: declara fptr puntero-a-función fptr = auxa; // M.2: inicia fptr cout<<"La letra ”<<5<<” es una: “<< auxa(5)<<endl; escribe (5, fptr); // M.4: llamada a escribe return (0);}char auxa (int num) { // Definición de auxa char * str = "Hola mundo"; return str[num]; // L.16}void escribe (int pos, char (* fpointer)(int) ) { // definición de escribe char ch ; printf ("Estoy recibiendo la letra: %cn", auxa(pos)); ch = (* fpointer)(6); printf ("Estoy inventando la letra: %cn", ch);}Salida:La letra 5 es una: mEstoy recibiendo la letra: mEstoy inventando la letra: uComentario:La función auxa recibe un entero y devuelve un carácter. El puntero str a la matriz decaracteres "Hola mundo" es una variable local de esta función. El lector observador,percibirá que el carácter devuelto en L.16, se obtiene utilizando una notación de punterocon subíndice, algo extraño a la luz de la expuesto hasta ahora. En realidad tambiénpodríamos haber puesto:return *(str+num); // L.16-bisAl tratar de las matrices justificaremos la notación de subíndices más compacta. Por elmomento el lector puede aceptar la que le resulte más cómoda. También observar que
  • 2. en este caso hemos suprimido el paréntesis en el valor devuelto por no ser realmentenecesario.return (str[num]) == return str[num]La función escribe recibe dos parámetros: un entero, y un puntero-a-función aceptandoun entero y devolviendo un carácter. Su prototipo está en L.5, y su definición en L.18.Observe que esta función proporciona dos salidas. La primera de ellas es una invocacióna cout parecida a la realizada en M.3, en la que el segundo argumento es también elresultado de una invocación directa a auxa.La segunda se realiza también mediante un cout, pero en este caso, se utilizadirectamente un char como segundo argumento, que es proporcionado por la variablelocal ch. El punto interesante aquí es que su valor se ha obtenido mediante unainvocación a auxa a través de un puntero.El programa comienza declarando fptr, un puntero-a-función que acepta un entero ydevuelve un char (M.1). A continuación se inicia de forma que señale a la función auxa(que cumple con las condiciones exigidas por el puntero).En M.3 se escribe la primera salida. Observe que el tercer argumento de cout es elvalor devuelto por una invocación a auxa pasándole un 5 como argumento. En estecontexto las sentencias auxa(n); (* fpointer)(n); fpointer(n);son equivalentes.En M.4 se realiza una invocación a escribe utilizando como segundo argumento es elpuntero fptr definido en las líneas anteriores. Esta invocación es responsable de lasegunda y tercera salidas.

×