PDA

Ver la Versión Completa : ¿Qué utilidades tienen de los PUNTEROS?


gerupc
01-01-2008, 14:59:31
Hola,

siento hacer una pregunta tan amplia. Creo que sé 'qué' es un puntero y su utilización básica, pero no consigo entender porqué la gente dice que son tan importantes, tan útiles...que lo son todo, vamos.

No sé si alguien me pudiese orientar un poco, se lo agradecería xD, he estado googleando, pero he encontrado únicamente cómo se utilizan, para arrays...etc.

Un saludo,

Geru.

rcarrillom
01-01-2008, 17:36:40
Saludos al foro y felíz 2008

:o Hummm, haber si no se me ha olvidado, lo que almacena un puntero es un número que significa una dirección de memoria; absolutamente todo en la memoria de la PC son direcciones,
cuando arranca el sistema, el cargador de SO tiene una referencia (puntero o dirección) a un sector del disco duro, este se carga en memoria y continúa el proceso de arranque. Cuando utilizas una variable, en realidad estás usando un puntero apuntando (valga la rebuznancia) a una zona de memoria. Cuando abres un archivo necesitas un puntero para leer y escribir, éste contiene la referencia a la localización física en el DD donde reside lo que quieres leer o escribir, si necesitas usar memoria RAM, necesitas reservarla y la manera de saber dónde está es con un puntero que hace referencia al byte inicial... El SO lleva el control de muchas de estas acciones por lo que no tienes que preocuparte o saber que pasa.

Hablando de lenguajes de alto nivel, tienen un nivel de abstracción que no te das cuenta que usas punteros, se han implementado de manera que su manejo sea transparente y uno como programador no se preocupe por asignar y liberar manualmente la memoria que se necesita.

Con los de bajo nivel, como ensablador, sí estás más conciente de que usas direcciones de memoria y por supuesto uno debe liberar lo que reserva de la memoria.

Por ejemplo, en mis tiempos de Turbo Pascal 7, mi método preferido de dibujar la pantalla en modo texto era escribir directamente al buffer de memoria, y no utilizaba los clásicos writeln, lograba efectos de sombras, guardar el contenido de la pantalla, y todo con punteros; hablando de la operación del SO, puedes alterar (hackear) la ejecución normal del sistema con solo cambiar un número en una dirección de memoria específica, siendo su significado una dirección donde reside código ejecutable.

No soy muy bueno con explicaciones técnicas... así que alguien me explique... :D

seoane
01-01-2008, 19:19:01
Creo que fue roman quien dijo en otro hilo que, a día de hoy, en delphi se pude programar casi cualquier cosa sin utilizar punteros. Es verdad que se ha llegado a un nivel de abstracción donde prácticamente no se utilizan punteros, pero siguen ahí.

Su utilidad es evidente, hacer referencia a variables creadas en tiempo de ejecución. Por ejemplo, si queremos crear una lista de elementos de la que no conocemos previamente el numero de elementos. También son útiles para operaciones con matrices (arrays), por ejemplo cuando manejamos gráficos. Es verdad que delphi cuenta con arrays, arrays dinámicos, objetos, listas de objetos, etc ... pero aun así hay cosas para los que los punteros siguen siendo necesarios, por ejemplo para manejar la API de windows.