Io direi, quando dichiari la funzione:
int binarySearch(int* data_, int target_, int low_, int high_)
e quando la richiami:
int result = binarySearch(data, target, low, high);
visto che il nome di un array e' anche il suo puntatore, cioe', avendo dichiarato l'array data[LEN], data e' equivalente a &data[0].
Inoltre cambia i nomi delle variabili all'interno della funzione per non fare confusione con le variabili globali