3
respostas

Dúvida em relação a função jaChutou()

Boa noite, na função jaChutou(), o professor coloca como primeiro parâmetro um tipo char chamado letras, porém quando ele chama essa função e passa o parâmetro, ele passa um array de char, então ele não teria que ter criado o parâmetro como um array também? igual fez com o segundo parâmetro dessa função.

3 respostas

Oi Fábio! Tudo bem?

Você está se referindo a função abaixo, certo?

// função jachutou recebe um char letra e retorna 1 caso a letra foi encontrada no array de chutes
int jachutou(char letra)

Essa função é chamada nesse contexo:

// percorre as letras de palavra secreta
for(int i = 0; i < strlen(palavrasecreta); i++) {
        // verifica se a letra atual ja foi chutada
        if(jachutou(palavrasecreta[i])) {
        ...

Lembrando que a palavra secreta é um array de caracteres char palavrasecreta[TAMANHO_PALAVRA];. Quando usamos o operador [] num array, temos um elemento desse array, que tem o mesmo tipo. Sendo assim, o tipo de palavrasecreta[i] é char, então a função está correta :)

No caso, poderíamos separar o código abaixo de outra forma, pra ficar mais legível:

// percorre as letras de palavra secreta
for(int i = 0; i < strlen(palavrasecreta); i++) {
        char letra_atual = palavrasecreta[i];
        // verifica se a letra atual ja foi chutada
        if(jachutou(letra_atual)) {
        ...

É isso, bons estudos!

ahh sim, entendi. obg pela explicação

Até aí eu entendi.

O que me deixa confuso, no entanto, é que chutes é um array de chars também e com ele o procedimento foi diferente.

Na função está assim:

int jachutou (char letra, char chutes[26]) {

Na invocação da função está assim:

jachutou(palavrasecreta[i], chutes);

Ambos são arrays de chars e na função/invocação da função aparecem de formas diferentes.

Qual o porquê disso?

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