Cita:
Empezado por Casimiro Notevi
¿Un puntero a la misma?
|
No exactamente. Es más parecido a los "union". Por ejemplo:
Código Delphi
[-]
VAR
UnaLista: ARRAY [1..10] OF BYTE;
LngLista: BYTE ABSOLUTE UnValor;
En este caso, al compartir "LngLista" la dirección física con "UnaLista", LngLista "contiene" el número de elementos de UnaLista. Sin embargo no es un puntero ya que no puede cambiarse su dirección, así que el código generado es de acceso directo y no una indirección que es lo que generan los punteros.
Hay que tener en cuenta que es un poco peligroso, (aquí sí se parece a los punteros) ya que pueden asignarse valores o permitir el acceso a áreas de memoria:
Código Delphi
[-]
VAR
UnValor, OtroValor, TercerValor, YMas, YTal: INTEGER;
PROCEDURE Blabla;
VAR
MemoriaComprometida: ARRAY [1..4] OF INTEGER ABSOLUTE UnValor;
BEGIN
...
END;
Pero es útil, sobre todo en operaciones de bajo nivel. Así, en Allegro facilitaría mucho trabajo al poder acceder a la información de (por ejemplo) una imagen no sólo como una lista de octetos (BYTE) sino también de enteros de 32bit.
Nota: Todavía no lo he usado y hablo de lo que he leído, así que puede que no funcione exactamente así. Hay que investigar un poco.
Cita:
Empezado por Al González
Existe desde Turbo Pascal, y la uso desde entonces. El ejemplo más inmediato que tengo es la imagen de código en mi perfil de Twitter.
Saludos absolutos.
|
Gracias por la información.