RE:Gracias Cris, pero otra molestia
Los apuntadores no se usan para ahorrar espacio, simplemente cuando tienes que almacenar datos de los cuales no sabes cuantos son, los apuntadores te ahorran el uso de muchas variables, como en las listas (en este caso se les llama listas ligadas o enlazadas).
Supongamos que quieres hacer una lista de todos los alumnos que tomen determinado curso, junto con su codigo de alumno.
pero no sabes cuantos se inscribiran en dicho curso.
por lo tanto puedes hacer lo tipico, hacer un arreglo de registros:
type
alumno=record
nombre:string[15];
codigo:string[10];
end;
lista=array[0..30] of alumno
aqui tienes una lista con arreglos de 30 alumnos maximo no?
y que tal si solo se inscriben 3?, o si se inscriben 31?, en el primer caso desperdiciaras espacio en memoria, en el segundo caso tu programa tronara, pues no acepta mas de de 30 alumnos.
Los apuntadores entran aqui para hacer mas dinamico el asunto. Solo utilizaras los registros necesarios.
Te explico como se implementa:
type
alumno=record
nombre:string[15];
codigo:string[10];
siguiente:^alumno; {es el apuntador al siguiente registro}
end;
por lo tanto en este registro tendras tres campos, el nombre el codigo y un puntero a un registro, (recuerda que es la direccion de memoria de otro registro).
asi cuando se de de alta algun alumno se creara un nuevo registro.
Aqui es donde se usa el new(), donde le mandas un puntero a inicializar.
y dispose() se usa para liberar la memoria que se estaba usando.
para decir que un puntero no apunta a nada, le asignas nil, es una constante que sig