Olá Daniel, tudo bem com você?
Esse erro aconteceu pois o nome da função soma()
, é o mesmo nome da variável soma
declarada dentro da função main()
, gerando um conflito de nomes para o compilador, pois quando ele tenta chamar a função soma()
, tenta chamar a partir da variável, que é um ponteiro para um inteiro.
Outro ponto, dentro da função soma, está sendo recebido o ponteiro *calculo
, mas dentro da função printf()
está sendo referenciado a variável soma
, que não existe nesse caso. Além disso, na linha
(calculo) = (num1) + (*num2);
é necessário fazer a derreferenciação das variáveis calculo
e num1
, assim como está acontecendo com num2
, para evitar que a linguagme C trate-as como se fossem ponteiros, mas sim como números inteiros aos quais os ponteiros estão apontando. Segue o código da função soma()
:
void soma (int* num1,int* num2,int* calculo) {
(*calculo) = (*num1) + (*num2);
printf ("\nA soma dos numeros e: %d", *calculo);
}
Assim, garantindo a derreferenciação e utilizando a variável calculo
ao invés de soma
.
Por fim, é interessante trocar o nome da variável soma
, dentro da função main, para calculo, ou qualquer outro nome de preferência, ao não ser soma:
int num1,num2, calculo;
E é importante lembrar, também, que a função soma()
está sendo chamada antes de definirmos quais são o num1
e num2
, ou seja, não está acontecendo no momento ideal, pois é depois que definimos os números que queremos saber qual o valor de sua soma. Para resolver isso, podemos escreve a função main()
:
int main (){
int num1,num2, calculo;
printf ("****Soma utilizando funcoes e ponteiros!*** \n*");
printf("Digite o primeiro numero: ");
scanf("%d", &num1);
printf("\nDigite o segundo numero: ");
scanf("%d", &num2);
soma(&num1, &num2, &calculo);
}
Assim, o programa inicia, lê os dois números inteiros num1
e num2
e por fim faz a soma e exibe o resultado na tela, utilizando a variável calculo
.
Ponteiros é um assunto bem complicado dentro da linguagem C e é normal se deparar com muitos erros no início; não se preocupe, eles fazem parte da sua evolução!, em breve, você vai perceber como eles serão cada vez menos frequentes!
Fico à disposição em caso de dúvidas.
Um grande abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!