Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fernaEDLP en 4 Enero 2019, 21:41 pm



Título: función en c
Publicado por: fernaEDLP en 4 Enero 2019, 21:41 pm
hola gente bella, espero que anden bien, felicidades en este nuevo año. Tengo una duda con una  una función en c que todavía no puedo entender bien, es una funcion que invierte una cadena ingresada, el código es este, es RECURSIVA.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void imprimir_ite(char *pcad);
  4.  
  5.  
  6.  
  7. int main()
  8. {
  9.    char cad[80];
  10.    printf("ingrese la cadena de caracteres\n");
  11.    gets(cad);
  12.    imprimir_ite(cad);
  13.    return 0;
  14. }
  15.  
  16.  
  17. void imprimir_ite(char *pcad)
  18. {
  19.    if(*pcad=='\0')
  20.    {
  21.        return;
  22.    }
  23.    else
  24.    {
  25.         imprimir_ite(pcad+1);
  26.         printf("%c",*pcad);
  27.  
  28.    }
  29. }

Entiendo la parte inicial del código, o sea ingreso la cadena "hola" por ejemplo, entonces comienza a preguntarse si cada caracter es igual al final o sea '\0' , hace eso y siempre entra a la recursividad antes de imprimir nada, lo que no entiendo es el final, cuando encuentra '\0' la sentencia return? que hace?, lei que provoca una salida inmediata de la funcion hacia el punto donde fue llamada?, o sea cuando es que se empieza a imprmir el caracter a?
Código
  1.  


Título: Re: función en c
Publicado por: MAFUS en 4 Enero 2019, 23:23 pm
Sobre lo que estás preguntando se llama guarda y es la condición por la cual debe terminar la recursividad. Si no existiera estaría entrando en la función hasta quedarse el programa sin memoria.

En las funciones hay dos formas de terminarlas:
1. Cuando llegan al final.
2. Cuando encuentran una sentencia return.

Lo que va a pasar cuando se llegue al final de la cadena es que la función va a regresar sin hacer nada dándole el control a la llamante.
Esa función continuará después de la llamada y escribirá el carácter, en este caso es el último de la cadena. Hecho esto llegará al final y le devolverá el control a su llamante.
Esa función, igual que la anterior, continuará después de la llamada escribiendo el carácter de la cadena, en su caso el penúltimo.
Las funciones irán escribiendo el carácter que les toca y devolviendo el control a su llamante hasta llegar a la primera que, una vez termine, continuará con la ejecución natural del programa.


Título: Re: función en c
Publicado por: fernaEDLP en 5 Enero 2019, 07:47 am
graciass mafus