No entiendo para que sirven los punteros :/

Iniciado por $Edu$, 23 Noviembre 2011, 22:26 PM

0 Miembros y 1 Visitante están viendo este tema.

$Edu$

No se si funcionara lo mismo en todos los lenguajes pero mas que nada lo quiero saber en Pascal (creo q es Delphi tambien).

Diganme en que me estoy equivocando:

Un puntero es una direccion de memoria, por lo que sea el valor que esta contenga siempre apuntara hacia ahi. Bueno yo ahi dije: Ya entiendo cual sera la diferencia.. con variables comunes si hacemos:

a = 4
b = a
a = 5
c = a * b

La variable c valdria 20 ya que no importa si luego a cambia de valor o no.

Pero trabajando en punteros, mi idea era que si importaba lo que entonces daria 25.

Como funciona esto? tienen algun ejemplo que no encontre uno para decir: Oh, que grandes son los punteros! xD

Littlehorse

Un puntero es una variable que contiene una dirección de memoria, o que apunta a una dirección de memoria como se suele decir para que se entienda mejor.
Obviamente si en tu ejemplo B fuese un puntero, C terminaria con un valor de 25.

Por ejemplo:

a = 4; Variable A | valor = 4 | Dirección = 0x1000
*b = &a, Puntero B | valor = 0x1000 | Dirección = 0x1128
a = 5; Variable A | valor = 5 | Dirección = 0x1000
*b; Puntero B | valor = 0x1000 | Dirección = 0x1128

Independientemente del los cambios que sufra el valor de la variable A, la dirección es la misma (en este ejemplo por supuesto, puede haber casos en donde la dirección de memoria cambie por varios motivos: variables fuera del scope, nueva reserva de memoria dinamica, etc). Por lo tanto al acceder desde el puntero B, siempre vas a acceder al valor actual de la variable A.

Razones para los punteros hay muchas, desde el pasaje por referencia hasta el uso de memoria dinamica, arreglos, listas y miles de etcs. Todo lo que no permita usar punteros de forma nativa es porque en su implementación ya los utiliza y te ahorra el trabajo (por ejemplo en lenguajes como Java).

Hilos sobre punteros los hay muchos por el foro, utiliza el buscador a ver que encuentras y si no me dices.

Saludos!


An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Unbr0ken

De hecho estoy haciendo un tutorial sobre punteros pero guiado al Game Hacking basándome en el CE... para aquellos que os interese ;D.

Luego lo publico...
Cita de: SnowcrashDiscutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre.

NO resuelvo dudas vía MP, para algo está el foro.

$Edu$

Gracias littlehorse! y se espera ese tutorial unbroken :P

Pablo Videla

Cita de: Unbr0ken en 23 Noviembre 2011, 23:59 PM
De hecho estoy haciendo un tutorial sobre punteros pero guiado al Game Hacking basándome en el CE... para aquellos que os interese ;D.

Luego lo publico...

Avisa cuando lo publiques y seria bueno que explicaras con mayor detalle eso de las direcciones de memoria y si estan reservadas o algo asi, a prueba de imbeciles por favor, gracias xD

79137913

HOLA!!!

Mmm, pense que habias entendido Pff.

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

folostia

Cita de: Unbr0ken en 23 Noviembre 2011, 23:59 PM
De hecho estoy haciendo un tutorial sobre punteros pero guiado al Game Hacking basándome en el CE... para aquellos que os interese ;D.

Luego lo publico...
Cuando loa cabes y lo publiques avisa que seguramente me venga bien  :laugh:
"Antes de que un software pueda ser reusable, primero ha de ser usable." (Ralph Johnson)
Usuario Linux:547941