2015-06-19 105 views
2

我在C中使用這個快速排序函數,我想使用Ctypes綁定到OCaml。使用Ctypes數組

聲明如下:

void quicksort(int array[], int first, int last) 

我不知道放什麼類型的數組中的國外的第二個參數:

let cquicksort = foreign 
    "quicksort" (??? @-> int @-> int @-> returning void) 
;; 
+1

你試過(ptr int @ - > ...) –

+0

@EdgarAroutiounian是的,我試過了,但是quicksort不會返回正確的結果。這可能是代碼有其他問題,所以我要再試一次,讓你在循環中。 –

回答

1

您可以使用一個空指針像this教程。

let cquicksort = foreign 
    "quicksort" (ptr void @-> int @-> int @-> returning void) 

let start = to_voidp (CArray.start (CArray.of_list int[1;2;3;4;3]));; 

let() = 
    let carr = CArray.of_list int [1;2;4;5;3] in 
     let start = to_voidp (CArray.start carr) in 
      cquicksort start 0 4; 

快速排序後,您可以使用CArray.to_list獲得排序列表。