Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: maryrisas en 20 Febrero 2006, 20:15 pm



Título: duda sobre punteros
Publicado por: maryrisas en 20 Febrero 2006, 20:15 pm
Mi duda es si teniendo una variable y un puntero,e inicializas la variable a 0,haces que el puntero apunte a a la variable y por ultimo al puntero le asignas el valor de 5,¿el nuevo contenido de la variable es el valor del puntero?si es así,¿porqué es así?no entiendo
ejemplo:
         int main(){
         long dato=0;
         long *p_dato;
         *p_dato=5;
         printf("\n\t el nuevo contenido de dato es:%ld",dato);
         printf("\n\t el nuevo contenido de la dir. almacenada  es: %ld",*p_dato);                     
         getch();
         }
         


Título: Re: duda sobre punteros
Publicado por: [[JONAS]] en 23 Febrero 2006, 17:59 pm
Si acabas de iniciarte en punteros, al principio es un poco lioso pero una vez que coges bien el concepto es fácil:

veamos tu cuando declaras una variable de Tipo lo que sea por ejemplo long dato = 0 lo que estas haciendo realmente es reservar  una dirección de memoria por ejemplo la direccion AAAAA cuyo contenido la inicializas a un 0

cuando haces long dato = 0 es como si a la dirección de memoria AAAA la llamaras dato y la inicializas a 0.

por otro lado un Puntero lo que hace es apuntar a una dirección de memoria por lo que si haces

long *p_dato ;
p_dato = dato;

lo que haces realmente es que el puntero apunte a la dirección de memoria AAAA cuyo contenido es 0 ahora mismo.

Ahora tu con el puntero puedes modificar el valor de lo que contiene esa dirección de memoria. por lo que si haces
*p_dato = 5;

estas haciendo que la dirección AAAA contenga ahora no un 0 sino un 5

por eso cuando haces un printf de la variable dato( que en realidad es la dirección AAAA) ya no vale 0 sino 5

Espero que esto te ayude a comprender un poco mejor el tema de los punteros