Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Array e Ponteiro na Definição da Função

Há alguma diferença da função desenha_forca_1 para a desenha_forca_2? Note que só mudei a declaração dos parâmetros de cada função.

void desenha_forca_1(char* palavrasecreta, char* chutes, int tentativas){

    for (int i = 0; i < strlen(palavrasecreta); i++){

        int achou = jachutou(palavrasecreta[i], chutes, tentativas);   //passamos a palavra secreta, o vetor chutes e a tentativa.

            if (achou){
                printf("%c ", palavrasecreta[i]);
            } 
            else {
                printf("_ ");        
            }
    }   

    printf("\n");
    printf("\n");
}
void desenha_forca(char palavrasecreta[20], char chutes[26], int tentativas){

    for (int i = 0; i < strlen(palavrasecreta); i++){ 

        int achou = jachutou(palavrasecreta[i], chutes, tentativas);   //passamos a palavra secreta, o vetor chutes e a tentativa.

            if (achou){
                printf("%c ", palavrasecreta[i]);
            } 
            else {
                printf("_ ");        
            }
    }   

    printf("\n");
    printf("\n");
}
2 respostas
solução!

Oi Eduardo! Essa é uma pergunta interessante. Para o computador essas funções são iguais, pois o compilador considera um array de um tipo como um ponteiro para esse tipo (char c[20] ~> char* c), então na prática essas duas funções recebem os mesmos parâmetros.

Agora para os programadores existe diferença: a sua função void desenha_forca_1(char* palavrasecreta, char* chutes, int tentativas) recebe como parâmetros 2 ponteiros para "strings de C". A segunda função void desenha_forca(char palavrasecreta[20], char chutes[26], int tentativas), por outro lado, é mais restritiva e espera receber apenas "strings de C" de tamanho fixo de 20 e 26 caracteres, respectivamente.

Usar a segunda função pode ajudar outros programadores a entender melhor o tipo dos parâmetros que a sua função recebe. ;)

Muito obrigado, Gabriel! É um detalhe minucioso, gostei da explicação!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software