6
respostas

Exercício 1 - Aula sobre Ponteiros

Fiz o código e ele compilou normalmente, mas não consigo imprimir, o console simplesmente trava e exibe mensagem informando que o terminal parou de funcionar. Não consigo achar o erro.

Segue o código:

#include <stdio.h>

int main(){
    int*num;
    int a, b;

    printf("Digite um numero: ");
    scanf("%d", &a);
    printf("Digite mais um numero: ");
    scanf("%d", &b);

    printf("%d\n", soma(*num));
}

void soma(int*num, int a, int b){
    *num = a + b;
}
6 respostas

Olá Simone,

Compilei seu código aqui e eles gerou vários warnings. Posso esclarece-los aqui pra você, mas antes disso, qual comando você está utilizando para compilar ?

Douglas estou usando a IDE do Dev++ para fazer os códigos e compilar.

Olá Simone, As IDE's normalmente nos auxiliam e facilitam o desenvolvimento, mas as vezes elas podem esconder erros que acabam mais atrapalhando do que ajudando.

Recomendo que você compile seus códigos utilizando gcc, como é feito nos videos aqui na Alura.

Quanto ao seu programa, analisando os erros que recebi no console:

Erro

Vemos que quando você chama a função soma, nesta linha:

printf("%d\n", soma(*num));

Vemos alguns erros:

1 - Você passa apenas um parâmetro para ela, sendo que você declarou ela para receber três:

void soma(int*num, int a, int b)

2- A função soma tem retorno void, ou seja nada. O seu printf está esperando um retorno do tipo %d, ou seja, um inteiro. Acho que você estava querendo era apenas imprimir o resultado , não o retorno da função (que é nada, void).

Lembre-se também que a você está declarando o num como um ponteiro, e não atribui nada a ele , ou seja ele é vazio.

Você deve passar pra sua função soma, o que ela pede como primeiro parâmetro, ou seja o endereço de alguma variável do tipo int:

void soma(int*num, int a, int b)

Experimente modificar o seu programa um pouco, e caso não consiga a solução diretamente , comente aqui que eu coloco-a acompanhada de um passo a passo.

Não consegui resolver esse exercício do ponteiro, não consegui imprimir, mesmo fazendo alterações no código e declarando a função como int para obter um retorno.

Olá Simone, tudo bem?

Sou iniciante em programação. Não sei se entendi sua dúvida, mas veja se esse código lhe ajuda.

Qualquer dúvida estou à disposição.

Abraços e bons estudos.

#include <stdio.h>

int main(){
    int a, b;

    printf("Digite um numero: ");
    scanf("%d", &a);
    printf("Digite mais um numero: ");
    scanf("%d", &b);

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

int soma(int* a, int* b){
    int num;
    return num = (*a) + (*b);
}

Ei Simone, tudo bem? Eu acabei de fazer o exercício, se ainda tiver dúvida, aqui está o meu código:

#include <stdio.h>

int soma(int* a, int* b, int* num){
   return (*num) = (*a) + (*b);
}


int main(){
    int a, b, num;
    printf("Digite dois numeros, separados por espaco: \n");
    scanf("%d%d", &a, &b);
    soma(&a, &b, &num);
    printf("%d\n", num);
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software