delphi下的数组指针

 

在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值