2015-06-19 2 views
2

У меня есть эта функция quicksort в C, которую я хочу связать с OCaml, используя Ctypes.Использование массивов с 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, чтобы получить отсортированный список.

Смежные вопросы