Foros del Web » Programación para mayores de 30 ;) » Programación General »

ayuda con punteros

Estas en el tema de ayuda con punteros en el foro de Programación General en Foros del Web. Hola, he estado probando a buscar por ahi que es la derreferenciación en los punteros, si alguien pudiera ayudarme me serviria de gran ayuda!! aunque ...
  #1 (permalink)  
Antiguo 26/07/2006, 07:27
 
Fecha de Ingreso: julio-2006
Mensajes: 3
Antigüedad: 18 años, 6 meses
Puntos: 0
ayuda con punteros

Hola, he estado probando a buscar por ahi que es la derreferenciación en los punteros, si alguien pudiera ayudarme me serviria de gran ayuda!! aunque sea de una manera simple.

Gracias.
  #2 (permalink)  
Antiguo 26/07/2006, 15:18
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 9 meses
Puntos: 2
Primero tendrias que comprender que es un puntero, para comprender las desrreferenciación.

tratare de explicarte un poco.

un puntero es en realidad una variable, al igual que una variable int por ejemplo.

es decir un puntero a int* ocupa el mismo espacio en memoria que un int(32 btis).
pero la forma en que se interpreta su contenido es diferente.

int var = 10;

int* ptr = 10;

la diferencia es esta.

var contienen el valor 10. como un numero sin estar ligado a nada mas que ese valor en sí.

en cambio ptr tambien conterndra el valor 10 pero este estara ligado a una sona de memoria.

esto se interpreta en la lectura de la variable o en la asignacion en caso de los punteros.

si hacemos:

int otrovar = var;

int* otroptr = ptr;

en este caso tenemos exactamente lo mismo.

otrovar y otroptr contienen en este caso 10.
pero en elcaso de ptr el valor 10 se asocia a la sona de memoria 10.

si usamos los punteros de esta forma nos daremos cuenta que estamos usando un puntero como si fuera una variable int.
y no tendria sentido su uso.

la caracteristica importante de un puntero es su desrreferenciación.
con la cual en lugar de asignar o tomar un valor de la variable puntero en si lo hacemos de la memoria con la cual se asocia el valor contenido.

en este caso la sona de memoria 10;

veamos esto.

var tienen el valor 10.
ptr tienen el valor 10;

la diferencia es que ptr se puede desrreferenciar y var no. por que var no es un puntero y solo los punteros se pueden desrreferenciar.

de hecho esa es la caracteristica que hace diferente a un puntero de una variable.

al declarar:

int var = 10;
int* ptr = 10;

seria muy similar a hacer.

indesrreferenciable int var = 10;
desrreferenciable int ptr = 10;

los 2 usan 32 bits en memoria y guardan sus valores de la misma forma.

pero con ptr podemos ademas de asignar un valor a la variable ptr, tambien podemos asignar y leer de la memoria asociada al valor contenido en la variable ptr, en este caso 10;

int* ptr = 10;// variable ptr tienen el valor 10.
//desrreferenciamos
*ptr = 10; // seccion de memoria 10 tienen el valor 10;
*ptr = 100; // seccion de memoria 10 tienen el valor 100;
//modificamos el valor en ptr
ptr = 100;
*ptr = 20; //seccion de memoria 100 tienen el valor 20;
*ptr = 10 //seccion de memoria 10 tienen el valor 10;

ahora leeremos un puntero.

int* ptr = 100;
int var;
var = ptr; //var tienen el valor 100;
var = *ptr; //var tienen el valor contenido el la sona de memoria 100(en este caso desconosido)
*ptr = 1000; //la sona de memoria 100 tienen el valor 1000;
var = *ptr; //var tienen el valor contenido en la sona de memoria 100(en este caso 1000).

bueno solo eso.

Saludos
  #3 (permalink)  
Antiguo 27/07/2006, 02:53
 
Fecha de Ingreso: julio-2006
Mensajes: 3
Antigüedad: 18 años, 6 meses
Puntos: 0
muchas gracias de verdad. Ya tenia idea de que era mas o menos un puntero, pero asi me lo as aclarado mucho mas. Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:53.