09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

338 Capítulo 16. Punteros<br />

Naturalm<strong>en</strong>te, para usar punteros <strong>en</strong> un programa, no basta con definir el<br />

tipo puntero: es necesario declarar alguna variable con este tipo. En este fragm<strong>en</strong>to<br />

de programa se define el tipo tApuntChar como un puntero a variables<br />

de tipo char y, posteriorm<strong>en</strong>te, se declara la variable apCar de tipo puntero a<br />

caracteres.<br />

type<br />

tApuntChar = ^char;<br />

var<br />

apCar: tApuntChar<br />

Una variable de tipo puntero ocupa una cantidad de memoria fija, indep<strong>en</strong>di<strong>en</strong>tem<strong>en</strong>te<br />

del tipo del dato señalado, ya que su valor es la dirección <strong>en</strong> que<br />

reside éste. Por otra parte, si bi<strong>en</strong> el tipo de la variable apCar es tApuntChar, el<br />

dato señalado por apCar se d<strong>en</strong>ota mediante apCar^, cuyo tipo es por lo tanto<br />

char.<br />

Como ocurre con las otras variables, el valor de un puntero estará <strong>en</strong> principio<br />

indefinido. Pero, además, los objetos señalados no ti<strong>en</strong><strong>en</strong> exist<strong>en</strong>cia inicial, esto<br />

es, ni siquiera existe un espacio <strong>en</strong> la memoria destinado a su almac<strong>en</strong>ami<strong>en</strong>to.<br />

Por ello, no es correcto efectuar instrucciones como WriteLn(apCar1^) hasta que<br />

se haya creado el dato apuntado. Estas operaciones se estudian <strong>en</strong> el sigui<strong>en</strong>te<br />

apartado.<br />

16.1.2 G<strong>en</strong>eración y destrucción de variables dinámicas<br />

En la introducción del tema se destacó la utilidad de la memoria dinámica, de<br />

variables que se g<strong>en</strong>eran cuando se necesitan y se destruy<strong>en</strong> cuando han cumplido<br />

su cometido. La creación y destrucción de variables dinámicas se realiza por<br />

medio de los procedimi<strong>en</strong>tos predefinidos New y Dispose, respectivam<strong>en</strong>te. Así<br />

pues, la instrucción<br />

New(apCar)<br />

ti<strong>en</strong>e un efecto doble:<br />

1. Reserva la memoria para un dato del tipo apropiado (<strong>en</strong> este caso del tipo<br />

char).<br />

2. Coloca la dirección de esta nueva variable <strong>en</strong> el puntero.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!