Ir ao conteúdo
  • Cadastre-se

Matheus222622

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

posts postados por Matheus222622

  1. Olá, antes de mais nada gostaria de dizer obrigado a quem responder minha dúvida. Bom eu estou aprendendo a linguagem C, e em um dos livros que estou lendo, vi um código que utiliza a recursividade para inverter uma string:

    #include <stdio.h>
    #define SIZE 80
    void reverse( const char * const sPtr ); // prototype
    int main( void )
    {
       char sentence[ SIZE ]; // create char array
       puts( "Enter a line of text:" );
       // use fgets to read line of text
       fgets( sentence, SIZE, stdin );
       puts( "\nThe line printed backward is:" );
       reverse( sentence );
    } // end main
    // recursively outputs characters in string in reverse order
    void reverse( const char * const sPtr )
    {
       // if end of the string
       if ( '\0' == sPtr[ 0 ] ) { // base case
          return;
          } // end if
          else { // if not end of the string
               reverse( &sPtr[ 1 ] ); // recursion step
               putchar( sPtr[ 0 ] ); // use putchar to display character 
          } // end else
    } // end function reverse

    Código retirado do livro: C - How to Program 7th edition, página: 347, autor: Deitel.

     

    Minha dúvida é a seguinte: como a função "reverse" funciona? Algúem pode me explicar detalhadamente? Porque não consegui entender como ela inverte um string, sendo que na linha: 21, a chamada "reverse" é chamada e recebe como argumento o endereço de memória do segundo espaço do array "sentence", e eu imagino, como ela inverte um string sendo que na próxima chamada recursiva, ela vai receber novamente "o endereço de memória do segundo espaço do array(sentence)".

     

    Desde já agradeço a qualquer um que se comprometer a sanar minha dúvida.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...