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

Por que preciso usar o return ?

Olá. Gostaria de saber por que devo usar o return (*res) . Sendo que dentro da minha função eu estou alterando o valor da variável resultado ?`

#include <stdio.h>

int potencia(int base, int expoente, int* res) {

    (*res) = 1;
    for(int i = 0; i < expoente; i++){
        (*res) = (*res) * base;

    }

}

int main() {

    int a, b, resultado;
    scanf("%d%d", &a, &b);

    printf("%d\n", resultado);
    resultado = potencia(a, b, &resultado);
    printf("%d\n", resultado);

}
```
2 respostas
solução!

Por causa da assinatura da sua função:

int potencia(int base, int expoente, int* res)

O primeiro parâmetro especifica o tipo do retorno, então sua função deve retornar uma variável int.

Para não retornar um valor, mude o tipo de retorno para void:

void potencia(int base, int expoente, int* res)

Na verdade Felipe, o que eu queria dizer era, por que devo colocar um return no final da função , para que na main eu imprima o valor dos cálculos feitos na função potencia ? Mas eu descobri que não é necessário fazer isso. Se eu fizer :

#include <stdio.h>

int potencia(int base, int expoente, int* res) {

    (*res) = 1;
    for(int i = 0; i < expoente; i++){
        (*res) = (*res) * base;
    }
}

int main() {

    int a, b, resultado;
    scanf("%d%d", &a, &b);

    potencia(a, b, &resultado);
    printf("%d\n", resultado);
}

O valor de "resultado" será o esperado.