elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Curso de Delphi
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Curso de Delphi  (Leído 37,159 veces)
Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Curso de Delphi
« Respuesta #10 en: 30 Octubre 2010, 15:31 pm »

Capítulo 10. Punteros I.

Los punteros son variables que almacenan la posición de memoria en la que se encuentra un dato. En Delphi se pueden emplear punteros como se haría en C.

A simple vista las clases y objetos de Delphi, no parecen punteros, pero en realidad si que lo son. Se oculta su verdadera naturaleza para que al programador le sea más agradable trabajar con ellos (ya veremos las clases más adelante).
Otro ejemplo, es el tipo de datos string; este es un puntero que apunta a una región de memoria dinámica en la que se almacena texto. El tamaño máximo de un string ronda los 4 Gb...

El tipo genérico de puntero en Pascal se llama Pointer, es un puntero no-de tipo porque únicamente contiene una dirección de memoria, y el compilador no guarda ninguna información sobre el dato al que apunta.
Los punteros con tipo se declaran utilizando el operador ^ (puntero) antes del tipo de dato de una variable.

Ejemplo:

Código
  1. var
  2.   I: ^Integer;
  3.  

Para que un puntero tenga la dirección de memoria de otra variable, usaríamos este método:

Código
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.  SysUtils;
  7.  
  8. var
  9.  Puntero: ^Integer;
  10.  I: Integer;
  11. begin
  12.  I:= 5;
  13.  Puntero:= @I; //Tambien sirve Puntero:= Addr(I);
  14.  
  15.  Writeln('I tiene el valor: ', I);
  16.  Writeln('Puntero tiene el valor: ', Puntero^);
  17.  Readln;
  18. end.
  19.  

Creamos una variable de tipo integer y un puntero que apunta a una variable de tipo integer. Introducimos un valor en I y utilizando el operador @ o Addr, le decimos a Puntero que apunte a la dirección de memoria de I. Luego comprobamos que I y Puntero tienen el mismo valor. Para acceder al valor de un puntero hay que poner el operador ^ al final.

Tendríamos algo como esto:



Un puntero también puede apuntar a un valor en concreto, no hace falta que sea una variable. Ejemplo:

Código
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.  SysUtils;
  7.  
  8. var
  9.  Puntero: ^Integer;
  10. begin
  11.  Puntero^:= 5;
  12.  
  13.  Writeln('Puntero tiene el valor: ', Puntero^);
  14.  Readln;
  15. end.
  16.  




En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines