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.
| |||
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. |
| |||
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 |