Oi, Leonardo! Tudo bem?
Na programação de fato existem práticas que são mais recomendadas para garantir um código mais limpo, modular e fácil de manter, porém não exatamente uma definição de certo ou errado. Declarar variáveis globais pode funcionar, mas geralmente é preferível evitar isso quando possível, pois podem tornar o código mais difícil de entender e depurar, especialmente em projetos maiores.
No caso apresentado, podemos passar as variáveis como argumentos para a função chuta
, o que torna a função mais modular e reutilizável, de acordo com o exemplo:
void chuta(char chutes[], int *tentativas) {
char chute;
printf("Qual letra? ");
scanf(" %c", &chute);
chutes[*tentativas] = chute;
(*tentativas)++;
}
int main() {
char chutes[26];
int tentativas = 0;
chuta(chutes, &tentativas);
// Você pode chamar a função `chuta` quantas vezes precisar
// e as variáveis `chutes` e `tentativas` serão atualizadas corretamente.
return 0;
}
Nele, a função chuta
recebe um array chutes
e um ponteiro para tentativas
, o que permite que a função atualize o array e incremente o número de tentativas diretamente.
Espero ter ajudado!
Um forte abraço e bons estudos!