作者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
推 yauhh:傳回一個結構啊,或是使用參數傳回 218.160.210.62 04/19 20:50
→ yuchih0519:感謝,看來只能先從調用方劃分好記憶體 114.42.143.210 04/20 23:07
→ yuchih0519:然後用傳址變數去修改該區域作為輸出了 114.42.143.210 04/20 23:08