Olá Giliandro.
Está correto sim, mas tenho algumas sugestões.
Por exemplo nessa parte:
void potencia (int* resultado, int a, int b){
*resultado = 1;
for (int i = 0; i<b; i++){
*resultado = *resultado*a;
}
printf("Resultado é:%d\n", *resultado);
printf("Resultado é:%d\n", &resultado);
}
É melhor imprimir (printf) a variável resultado fora da função, imprimir ela no main por exemplo:
potencia (&resultado, base,expoente);
printf("Resultado é:%d\n", resultado);
Porque dessa maneira, utilizar o ponteiro teria um proposito, da maneira que estava antes a variável resultado não era utilizada fora da função então não seria necessário um ponteiro, mas agora utilizando ela com o printf no main damos um proposito para o seu uso.
Outra recomendação que faço é para utilizar parenteses quando for acessar um ponteiro, (*resultado), isso porque quando vamos ler o código eles facilitam o entendimento.
Por exemplo, nas linhas abaixo temos o mesmo resultado, porem na primeira fica confuso quando estamos usando asterisco * para acessar o ponteiro e quando estamos multiplicando, já na segunda linha fica claro que estamos acessando o ponteiro da variável resultado e estamos multiplicando com a variável 'a'.
(1)
*resultado = *resultado*a;
(2)
(*resultado) = (*resultado) * a;
Agora uma ultima sugestão é inserir comentários no seu código quando você julgar que aquele trecho é complicado ou seu proposito não é claro para quem está lendo, fiz algumas sugestões de comentários no código abaixo:
void potencia (int* resultado, int a, int b){
// atribuindo o valor neutro da multiplcação na variavel resultado
(*resultado) = 1;
for (int i = 0; i<b; i++){
// salvando a multiplicação de 'a' com o valor acumulado em 'resultado' e salvando na variavel 'resultado'
(*resultado) = (*resultado) * a;
}
}
O código com todas as minhas sugestões segue abaixo:
// Inclui as bibliotecas
# include <stdio.h>
# include <string.h>
void potencia (int* resultado, int a, int b){
*resultado = 1;
for (int i = 0; i<b; i++){
*resultado = *resultado*a;
}
printf("Resultado é:%d\n", *resultado);
printf("Resultado é:%d\n", &resultado);
}
void potencia (int* resultado, int a, int b){
// atribuindo o valor neutro da multiplcação na variavel resultado
(*resultado) = 1;
for (int i = 0; i<b; i++){
// salvando a multiplicação de 'a' com o valor acumulado em 'resultado' e salvando na variavel 'resultado'
(*resultado) = (*resultado) * a;
}
}
int main(){
int base;
int expoente;
int resultado;
printf("Qual a base? \n");
scanf (" %d", &base);
printf("Qual o expoente: \n");
scanf (" %d", &expoente);
potencia (&resultado, base,expoente);
printf("Resultado é:%d\n", resultado);
}
Espero ter te ajudado a entender melhor e que minhas sugestões tenham sido uteis para você.
Bons Estudos.