Ir ao conteúdo

Ponteiros - Pq esta erradoi?


cralx2k

Posts recomendados

Postado

Vou tentar te explicar.

Quando voce declara "int x, *p;", voce diz que a váriavel p é um ponteiro para o tipo int.

Bom até ai tudo bem.

Quando voce usa "*p = x;", voce diz que o local da memória para onde a variável p está apontando, deve receber o valor que a variável x armazena.

Mas agora eu pergunto, para que local da memória a variável p está apontando?

A resposta seria, para nenhum local.

Vou tentar ser um pouco mais didático.

Quando voce declara "int x, *p;", voce diz ao compilador que x aponta um local da memória que contem espaço suficiente para armazenar um valor do tipo int e diz também que p pode apontar (mas não aponta ainda, porque voce definirá isso na sua implementação) um local da memória que contem espaço suficiente para armazenar um valor do tipo int. Conseguiu sacar a diferença?

Qualquer dúvida pode perguntar.

Postado

resumindo:

x=15

p=&x //ponteiro esta apontando para o endereco de x

x=*p // x = o valor que o endereco de x esta apontando,no caso 15

Postado

Seguindo seu primeiro exemplo, voce poderia consertar dando um espaço na memória para p usando malloc. + ou - assim:


int main () /* CERTO */
{
int x, *p;
x=13;
p = malloc(sizeof(int)); // agora *p aponta um espaço na memória
*p=x;
return (0);
}

Esse é apenas um exemplo simples, seguindo a lógica que voce usou no primeiro exemplo.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!