Delphi指针学习

  • 定义类型
type
  Matrx1 = array of Double;
  Matrx2 = array of Matrx1;
  PPDouble = ^PDouble;
  • 测试代码

 

var
  a1 : Matrx1;
  a2 : Matrx2;
  p  : PDouble;
  pp : PPDouble;
begin
  SetLength(a1, 3);
  SetLength(a2, 3, 2);
  a1[0] := 1;
  a1[1] := 2;
  a1[2] := 3;
  a2[0][0] := 11;
  a2[0][1] := 12;
  a2[1][0] := 21;
  a2[1][1] := 22;
  a2[2][0] := 31;
  a2[2][1] := 32;
  p  := @a1[0];
  pp := @a2[0];
  ShowMessage(FloatToStr(p^) + '  ' + FloatToStr((pp^)^));
end;

     @表示取地址,^表示取值,上面的结果为 1  11;

    如果想取得a1的第二个元素呢,

Inc(p, 1); 

ShowMessage(FloatToStr(p^) + '  ' + FloatToStr((pp^)^));

     结果为:2   11。

    取得a2的指定位置元素:

    Inc(pp, 1);   (pp^)^ 为 21,即第二行第一列的值;

    Inc(pp^, 1); 则(pp^)^为12,即第一行第二列的值;

  • PDouble转成Matrx1
function PDoubleToArray(aPDouble: PDouble; m: Integer): Matrx1;
var
  i: Integer;
begin
  SetLength(Result, m);
  for i := 0 to m - 1 do
  begin
    Inc(aPDouble, i);
    Result[i] := aPDouble^;
    Dec(aPDouble, i);
  end;
end;
  • PPDouble转成Matrx2
function PPDoubleToArray(aPPDouble: PPDouble; m, n: Integer): Matrx2;
var
  i, j : Integer;
begin
  SetLength(Result, m, n);
  for i := 0 to m - 1 do
  begin
    Inc(aPPDouble, i);
    for j := 0 to n - 1 do
    begin
      Inc(aPPDouble^, j);
      Result[i, j] := (aPPDouble^)^;
      Dec(aPPDouble^, j);
    end;
    Dec(aPPDouble, i);
  end;
end;

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值