Pascal/Turbo Pascal - punteros

 
Vista:

punteros

Publicado por Raul Marmolejo (15 intervenciones) el 06/09/2000 00:00:00
Quisiera saber que son los punteros y para que sirven, y si se pudiera ejemplos de ellos por favor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Son algo así...

Publicado por Jorge (4 intervenciones) el 14/09/2000 00:00:00
Un puntero es el nombre que recibe UNA VARIABLE que guarda una dirección de memoria.
¿Para qué los usas?, bueno, vos viste que en la memoria de la máquina cada byte tiene una dirección y que esa dirección es un número: 1, 2, ..., n. Supongamos que hay una tabla que me interesa leer en la dirección 0. ¿Pero qué pasa?, yo cuando cargo mi programa no sé si lo va ha hacer justo en esa dirección, pensemos que incluso antes se carga el sistema operativo que seguramente ya habrá ocupado esa dirección por ser la primera libre. Existe por eso un sistema que me permite leer cualquier lugar de memoria y son justamente los punteros.
Un puntero hace referencia a un lugar de memoria (guarda una dirección, por ejemplo la 0), pero no sólo eso, si no que tiene la capacidad de "desreferenciarse" y devolverme el byte que está en la dirección de memoria a la que estaba apuntando. En en problema anterior, yo tendría que "apuntar" el puntero a la dirección 0 y "desreferenciarlo" para leer la información que se encuentra en esa dirección.
Ahora eso sí, leer byte por byte es embolante. Pascal permite definir punteros a estructuras y transferir (o leer) varios bytes a la vez.

Otro uso para que no se quejen los del foro que no digo EL PRINCIPAL USO DEL PUNTERO:

Con los punteros, vos podés ocupar y desocupar memoria en tiempo de ejecución y de esta forma poder implementar "arreglos dinámicos" llamados listas. En vez de definir un arreglo bestial, que seguro no sabés si siempre lo vas a llenar, podés ocupar la memoria a medida que la necesitas y desocuparla cuando ya no la uses.

Te hago un ejemplo cortito de algo sincillícimo en Pascal y la corto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sigue

Publicado por Jorge (4 intervenciones) el 19/09/2000 00:00:00
{Declaro un puntero a una estructura y la propia estructura}

TYPE
Registro = Record
x, y : Integer;
nombre : String[80];
end;
PunteroAReg = ^Registro;

{Hasta acá, nada ocupa espacio. Ahora declaro las variables}
VAR
puntero : PunteroAReg;

BEGIN
{puntero, no emplea espacio en memoria aún.}
{Ahora sí le asigno espacio en el Heap.}
New(puntero);

{Ahora puedo diponer de puntero como una variable normal, salvo el detalle del "^".}

puntero^.x := 30;
puntero^.nombre := ´Jorge´;
...
{Hago el uso que quiera de la variable...}
...
{Y luego la libero de la memoria.}

Dispose(puntero);

END.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar