Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvida persistente em relação à função jachutou()

Gostaria de entender porque palavrascreta[] e chutes[] foram usados de forma diferentes na função e na invocação da função, mesmo ambos sendo arrays.

O que me deixa confuso, é que chutes é um array de chars também, assim como palavrasecreta[], 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?

2 respostas
solução!

Bom dia, Daniel! Belezinha?

Vamos começar falando um pouco sobre arrays:

Um array nada mais é do que um ponteiro para uma sequência de elementos de um tipo que estão armazenadas na memória de forma contígua:

// declaração de um ponteiro que aponta para uma sequência de 26 elementos do tipo char

char chutes[26];

Para você acessar um elemento específico do array precisamos usar o operador [ ] e um índice de 0 até o tamanho do array -1. Por exemplo para acessar o 5º elemento do array, basta:

char quinta_letra = chutes[4];
char segunda_letra = chutes[1];

Agora, olha só que curioso o exemplo acima onde um variável do tipo char está recebendo um elemento do array.

É exatamente isso que está acontecendo com a sua função jachutou.

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

O primeiro parâmetro espera um argumento do tipo char (que pode ser um elemento do array como palavrasecreta[i]). A função está recendo apenas um elemento do array na posição i.

Já o segundo parâmetro espera o próprio array como argumento. Então, faz sentido passar apenas o nome do array como jachutou(palavrasecreta[i], chutes);.

Massa! Entendi direitnho. Valeu, Fábio!