C 訪問C 動態分配的陣列指標 例項講解

2022-09-26 03:39:10 字數 798 閱讀 2951

專案中遇到c#呼叫c++演算法庫的情況,c++內部運算結果返回矩形座標陣列(事先長度未知且不可預計),下面方法適用於訪問c++內部分配的任何結構體型別陣列。當時想當然的用ref array傳遞引數,能計算能分配,但是在c#裡只得到arr長度是1,無法訪問後續陣列item。

c++介面示例:

void call(int *count, rect **arr)

結構體:

struct www.cppcns.comrect

;c#:

結構體:

struct rect

外部dll方法宣告:

[dllimport("***.dll", entrypoint = "call", callingconvention = callingconvention.cdecl, exactspelling = true)]

public static extern void call(

ref int count,

ref intptr parray);

方法呼叫:

intptr parray = intptr.zero; //陣列指標

int count 程式設計客棧= 0;

call(ref count, ref parray);

var rects = new rect[count]; //結果陣列

for (int i = 0; i < count; i++)

參考鏈結:基於c#呼叫c++dll結構體陣列指標的問題詳解

本文標題: c#訪問c++動態分配的陣列指標(例項講解)

本文位址:

動態分配陣列C 模板

通過動態分配的方法實現了動態陣列的建立,其中包括多種運算子過載。include define size 100 using namespace std template class array 有參建構函式,引數為陣列的長度 array int n length n 有參建構函式,引數為陣列的長度和...

C語言動態分配陣列

最近在研究c語言相關的東西,遇到了一些問題,主要是關於陣列記憶體分配的問題。我們最常用的陣列分配方式就是使用 int array 來分配固定長度的陣列,但是當需要動態分配陣列長度的時候怎麼辦呢?最近在使用的時候就遇到了,然後自己搜了搜相關的使用方法。1.先介紹基本資料型別的建立方法 int arra...

關於c 的動態分配陣列

在c 中,陣列的長度的值應該是乙個具體的數字,不能是乙個變數。通常我們借助指標來給動態分配陣列 一維陣列 int n cin n int a new int n 二維陣列 int n cin n int a new int n for int i 0 i n i int n cin n char a...