Olá Giliandro.
Seu código está parcialmente correto com o que foi proposto no exercício, no enunciado temos que "Escreva uma função soma que recebe um ponteiro de inteiro num e mais dois inteiros a e b. A função deve calcular a soma de a+b em num.", então é dito que a nossa função deve receber 1 ponteiro num e 2 inteiros a e b, então a assinatura da nossa função ficaria assim:
void soma (int a, int b, int *num);
Mas porque ela deveria ser assim ? O motivo é que os valores das variáveis a e b não serão alterados por isso não temos a necessidade de usar ponteiros, ao contrario da variável num onde vamos guardar o resultado da soma então ela deve ser um ponteiro.
void soma (int a, int b, int *num){
(*num) = a + b;
}
Nossa função vai ficar dessa maneira, recebemos os valor de a e b e recebemos um ponteiro num onde depois de acessa-lo (*num) salvamos o valor da soma a + b.
Agora dentro do main, criamos uma variável resultado e mandamos o seu endereço (&resultado) para a função soma ficando dessa maneira:
int resultado;
soma (entrada1, entrada2, &resultado);
printf("Resultado é:\n%d\n", resultado);
O código completo fica assim:
// Inclui as bibliotecas
# include <stdio.h>
void soma (int a, int b, int *num){
(*num) = a + b;
}
int main(){
int entrada1;
int entrada2;
printf("Entrada 1: \n");
scanf (" %d", &entrada1);
printf("Entrada 2: \n");
scanf (" %d", &entrada2);
int resultado;
soma (entrada1, entrada2, &resultado);
printf("Resultado é:\n%d\n", resultado);
}
Um ponto importante a ser analisado no seu código original é o fato de porque usamos ponteiros:
void soma (int *a, int *b){
int resultado = (*a)+(*b);
printf("Resultado é:%d\n", resultado);
}
Estamos sim recebendo os endereços e fazendo uso dos ponteiros de a e b, porem não estamos alterando o seu valor nesse caso, então não faz sentido receber os valores dessa maneira.
Espero ter te ajudado a entender melhor o conceito de ponteiros, continue empenhado como está, parabéns.
Bons Estudos.