2015-06-19 47 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获得排序列表。