Logo Hardware.com.br
Thiskyone
Thiskyone Membro Senior Registrado
325 Mensagens 3 Curtidas

Duvidas com ponteiros

#1 Por Thiskyone 21/10/2006 - 20:53
Ola pessoal tenho a seguinte duvida to iniciando em c e queria saber se quando trabalhamos com ponteiros e certo fazer como o programa abaixo:
#include <stdio.h>
int main ()
{
int num,*p;
num=55;
p=&num;
printf ("\nValor inicial: %d\n",num);
scanf ("%d",&*p); /*isso e possivel e se possivel eh correto?*/
printf ("Valor final: %d"num);
return 0;
}
tetim
tetim Membro Senior Registrado
366 Mensagens 1 Curtida
#2 Por tetim
22/10/2006 - 01:14
É correto sim.
Desde que você tenha atribuido o endereço da memória de um tipo inteiro, ao ponteiro p:

int num, *p;
p = &num;

Se você retirar p = &num, dará um crash no seu programa, pois ele estará escrevendo em um local não alocado.

int *p;

p = malloc(sizeof(int) * 1);

scanf("%d", &(*p));

Também funciona...
"Conseguirão parar uma, duas ou até tres flores, mas nunca conseguirão segurar a força de uma primavera..."[Chê Guevara]
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#4 Por jqueiroz
23/10/2006 - 18:08
scanf("%d", &(*p));


Veja só, interessante. O que faz o operador "&"? Retorna um ponteiro para um elemento. E o que faz o operador "*"? Retorna o elemento apontado por um ponteiro.

Não é que são exatamente as funções opostas? Então, esse trecho é a mesma coisa que...

scanf("%d", p );

wink.png
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal