Ir para conteúdo
Fórum Script Brasil

Matheus22

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Matheus22

Matheus22's Achievements

0

Reputação

  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.
×
×
  • Criar Novo...