#include <stdio.h>
#include <stdlib.h>
void foo(int *bar);
void foo(int *bar) {
int *spam;
spam = (int *) malloc(sizeof(int));
*spam = 5;
bar = spam;
}
int main(void) {
int *bar;
bar = (int *) malloc(sizeof(int));
foo(bar);
printf("%d", *bar);
return 0;
}
Eu estou estudando ponteiros, eu sei que isso poderia ser feito de outra forma :)
Mas enfim, porque o resultado (printf) dessa função é 0 ao invés de 5? Seria o escopo? A região da memória de spam é desalocada quando acaba a função? Como bar e spam apontam para a mesma região, ele fica 0. Estou certo?
Pergunta
Prove Yourself
Baseado no seguinte código:
Eu estou estudando ponteiros, eu sei que isso poderia ser feito de outra forma :)
Mas enfim, porque o resultado (printf) dessa função é 0 ao invés de 5? Seria o escopo? A região da memória de spam é desalocada quando acaba a função? Como bar e spam apontam para a mesma região, ele fica 0. Estou certo?
Valeu pessoal.
Editado por Prove YourselfLink para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.