作者yuchih0519 (昱)
看板Programming
标题[问题] 函式回传阵列指标(双重指标)一问
时间Mon Apr 19 20:39:12 2010
各位前辈们好,
最近我在研究dll函式回传阵列指标的写法,可是遇到不知道怎麽解决的状况
我要写一个创造 N x N 单位矩阵的函式,其回传值为该二维阵列的双重指标
在函式内部把指标都抓到了之後,回传给主程式接之後读取会出现错误,
好像是函式内所创建的阵列本体在函式结束之後随之消灭的缘故,
请问要如何做才能正确回传双重指标?
以下为我的程式码,用的是Delphi/FreePascal的语法,希望有前辈可以指点错误。
谢谢!
function Identity(N:Integer):Pointer;StdCall;
var
I,J:Integer;
TMPAry:Array of Array of Double;
Ptr1:Array of ^Double;
Output:Pointer;
begin
setlength(TMPAry,N,N);
setlength(Ptr1,N);
for I := 0 to N-1 do
begin
Ptr1[I]:=@TMPAry[I,0];
for J := 0 to N-1 do
begin
if I=J then TMPAry[I,J]:=1
else TMPAry[I,J]:=0;
end;
end;
Output:=@Ptr1[0];
Result:=Output;
end;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.122.47.93
1F:推 yauhh:传回一个结构啊,或是使用参数传回 218.160.210.62 04/19 20:50
2F:→ yuchih0519:感谢,看来只能先从调用方划分好记忆体 114.42.143.210 04/20 23:07
3F:→ yuchih0519:然後用传址变数去修改该区域作为输出了 114.42.143.210 04/20 23:08