Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Não entendi a ideia e o funcionamento da função return.

Não entendi como funciona e para que serve a função return, nesse caso ele utiliza o return para atribuir um valor ao "achou" que será usado posteriormente, correto?:

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

    int achou = 0;

    for (int j = 0; j < tentativas; j++)
    {
        if (chutes[j] == letra)
        {
            achou = 1;
            break;
        }
    }

    return achou;
}

Porém ele iguala o int "achou" ao "jachutou", mas eu não entendi como o "jachutou" poreria ter um valor, sendo que em nenhum momento um valor foi igualado a ele:

int achou = jachutou(palavrasecreta[i], chutes, tentativas);

Além de que, se fosse para usar o achou depois, não dava na mesma usar um ponteiro? Por exemplo: `#include <stdio.h>

#include <string.h>

void abertura(){ printf("*\n"); printf("* Jogo da Forca \n"); printf("****\n\n");}

void chuta(char chutes[26], int* tentativas){ char chute; scanf(" %c", &chute);

chutes[(*tentativas)] = chute;
(*tentativas)++;

}

void jachutou(char letra, char chutes[26], int tentativas, int* achou){

for (int j = 0; j < tentativas; j++)
{
    if (chutes[j] == letra)
    {
        (*achou) = 1;
        break;
    }
}

}

int main(){

char palavrasecreta[20];

sprintf(palavrasecreta, "MELANCIA");

int acertou = 0;
int enforcou = 0;

char chutes[26];
int tentativas = 0;

abertura();

do
{
    for (int i = 0; i < strlen(palavrasecreta); i++)
    {   
        int achou = 0;

        jachutou(palavrasecreta[i], chutes, tentativas, &achou);

        if (achou)
        {
            printf("%c ", palavrasecreta[i]);
        }
        else
        {
            printf("_ ");     
        }
    }
    printf("\n");

    chuta(chutes, &tentativas);

}
while (!acertou  && !enforcou );

}`

1 resposta
solução!

Olá Guilherme, tudo bem?

A função return é utilizada para retornar um valor de uma função. No exemplo que você postou, a função jachutou retorna o valor da variável achou, que é 0 ou 1, dependendo se a letra já foi chutada ou não. Quando a função é chamada, o valor retornado é atribuído à variável achou na linha int achou = jachutou(palavrasecreta[i], chutes, tentativas);. Dessa forma, a variável achou terá o mesmo valor que foi retornado pela função jachutou.

Quanto à sua pergunta sobre o uso de um ponteiro, é possível sim utilizar um ponteiro para modificar o valor de uma variável em outra função. No exemplo que você postou, a função jachutou utiliza um ponteiro para modificar o valor da variável achou. No entanto, o uso de um ponteiro não é obrigatório e pode ser mais simples utilizar o return em alguns casos.

Espero ter ajudado e bons estudos!