在C++中,数组指针变量指向数组的首地址, 即 int a[5][6]; a=&a[0];a=&a[0][0];
delphi中也是如此
除此之外delphi中还有静态数组与动态数组之分
比如 var
ad: array of char;
at: array[0..5] of char;
但是只有静态数组遵循上面的规则
即ad和at表示的意义是不一样的
ad是动态数组,定义的时候实际上并没有分配数组内存区
所以(setlength(ad,5)) @ad<>@ad[0] 而@at=@at[0]
其实可以把ad看做指向数组首地址的指针
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,classes;
var ac: array of char;
ai: array of integer;
acc:array[0..5] of char;
aii:array[0..5] of integer;
begin
{ TODO -oUser -cConsole Main : Insert code here }
if ac=nil then
sleep(1);
setlength(ac,6);
setlength(ai,6);
if @ac=@ac[0] then
sleep(1)
else
writeln(format(' %.8x-%.8x ',[Cardinal(@ac),Cardinal(@ac[0])])); //执行
if @ai=@ai[0] then
sleep(1)
else
writeln(format(' %.8x-%.8x ',[Cardinal(@ai),Cardinal(@ai[0])])); //执行
if @acc=@acc[0] then
sleep(1); //执行
if @aii=@aii[0] then
sleep(1); //执行
if PChar(Pointer(@ac)^)=@ac[0] then
sleep(1); //执行
readln;
end.
输出 004152F4--00A1C4E8
004154F8--00A31B0D