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!