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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  función en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: función en c  (Leído 463 veces)
fernaEDLP

Desconectado Desconectado

Mensajes: 48


Ver Perfil
función en c
« 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.  


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.492



Ver Perfil
Re: función en c
« Respuesta #1 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.


En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
fernaEDLP

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: función en c
« Respuesta #2 en: 5 Enero 2019, 07:47 am »

graciass mafus
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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