1
resposta

Array chutes esta recebendo os Inputs em outra função

Estou com uma dúvida no jogo da forca, criamos uma funcao do tipo void chamada "chuta", e dentro dela damos o Input que digitamos no teclado do computador, e quando retorna para funcao main, o array desta funcao recebe o input dado na funcao chuta, mesmo sem um retorno, como isso acontece?

da mesma forma que tivemos que jogar a variavel do tipo int tentativas para dentro da funcao porque quando acrescentava nela na funcao principal main isso nao ocorria porque na array chutes é diferente?

1 resposta

Olá, Thiago!

Entendo sua dúvida sobre como o array "chutes" recebe os inputs na função "chuta" mesmo sem um retorno explícito. Isso acontece porque quando passamos um array como parâmetro para uma função em C, estamos passando o endereço de memória do primeiro elemento desse array. Dessa forma, qualquer alteração feita no array dentro da função será refletida também fora dela.

No caso da função "chuta", quando você faz o input e armazena o valor no array "chutes", você está alterando o valor do array diretamente na memória. Portanto, ao retornar para a função principal "main", o array "chutes" já terá sido modificado.

Por exemplo, vamos supor que você tenha o seguinte código:

#include <stdio.h>

void chuta(char chutes[]) {
    printf("Digite um chute: ");
    scanf("%c", &chutes[0]);
}

int main() {
    char chutes[10];
    chuta(chutes);
    printf("O chute foi: %c\n", chutes[0]);
    return 0;
}

Nesse código, ao chamar a função "chuta" passando o array "chutes", o valor digitado pelo usuário será armazenado na posição 0 desse array. Em seguida, na função "main", o valor do array "chutes" será impresso.

Portanto, mesmo sem um retorno explícito na função "chuta", o array "chutes" é modificado diretamente na memória e essa modificação é refletida na função "main".

Espero ter esclarecido sua dúvida! Se tiver mais alguma pergunta, é só me dizer. Bons estudos!