共址变量是这样一种变量:声明时可以将其与其它的某个变量相绑定,绑定后二个变
量在内存中存储位置的起始地址相同。声明共址变量的格式为
var
v1:type1 absolute v2;
其中v2是一个声明过的变量。程序在编译时会将v1与v2的起始地址设置为相同位置。我
们以一个例子来说明:
program ShareAddress;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
c:AnsiChar;
i:Byte absolute c;
str:WideString;
leng:byte absolute str;
begin
try
c:='A';
Writeln(i);
str:='stringlength';
Writeln(leng);
readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
上例中i被声明成变量c的共址变量,这样一来变量i与变量c将在内存中的起始位置相
同。i在内存中占用一个字节,当攻取i的值时,系统会将变量c的第一个字节的值当成
是i的值,而c中第一个字节的值是字符‘A’,故i的值为65,leng的值为字符串str的第一个字节的值(即为字符串的长
度)