[問題] 函式回傳陣列指標(雙重指標)一問

看板Programming作者 (昱)時間15年前 (2010/04/19 20:39), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
各位前輩們好, 最近我在研究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

04/19 20:50, , 1F
傳回一個結構啊,或是使用參數傳回
04/19 20:50, 1F

04/20 23:07, , 2F
感謝,看來只能先從調用方劃分好記憶體
04/20 23:07, 2F

04/20 23:08, , 3F
然後用傳址變數去修改該區域作為輸出了
04/20 23:08, 3F
文章代碼(AID): #1Bp4xoSV (Programming)
文章代碼(AID): #1Bp4xoSV (Programming)