Entendi que variáveis em escopos diferentes, mesmo com o mesmo nome são diferentes, porem, o mesmo não acontece com o Array.
Fiz um teste e imprimi ambos os Arrays que estão em escopos diferentes(um na main e outro na chuta) e percebi que o valor do Array se mantem igual para ambas!
Ai vai a pergunta, quando falo que uma função vai receber um array, esse array está sendo declarado sem valor algum com seus espaços armazenando lixo de memória como acontece nos int´s ou tem alguma coisa por traz que faz ele segurar o valor? Quanto ao int tentativas, quando eu falo que a função vai receber uma variavel do tipo inteiro, porque ela tem um comportamento diferente do Array?
O código está igual ao da aula, com exceção dos prints para verificar os valores dos Arrays, por via das duvidas segue o código:
#include <stdio.h>
#include <string.h>
void abertura(){
printf("***************************\n\n");
printf("Bem vindo ao Jogo da Forca!\n\n");
printf("***************************\n\n");
}
void chuta(char chutes[26],int tentativas){
char chute;
printf("Qual letra? ");
scanf(" %c", &chute);
chutes[tentativas] = chute;
printf(chutes);
printf('\n\n')
}
int main(){
char palavrasecreta[20];
sprintf(palavrasecreta, "MELANCIA");
int acertou = 0;
int enforcou = 0;
char chutes[26];
int tentativas = 0;
abertura();
do{
int i;
for(i = 0; i < strlen(palavrasecreta); i++){
int j;
int achou = 0;
for(j = 0; j < tentativas; j++){
if(chutes[j] == palavrasecreta[i]){
achou = 1;
break;
}
}
if(achou){
printf("%c ", palavrasecreta[i]);
}else{
printf("_ ");
}
}
printf("\n");
chuta(chutes,tentativas);
printf(chutes);
printf('\n\n')
tentativas++;
}while(!acertou && !enforcou);
}