Binary search of an array of pointers to structs using pointer arithmetic

I have an array of structs and I want to B-Search these by a value inside of them. I am having trouble because I need to return the index (not address) after searching through the array of structs (typedef structs). This is what I have, and I am not sure my logic behind it is even right. Can somebody please help.

Code:

`int findValue(StructType * const array[], int size, const String target) {`

StructType * leftPtr = * array;

StructType * rightPtr = (* array) + size - 1; // error for the + sign

StructType * midPtr;

while (strcmp((*leftPtr).value, (*rightPtr).value) <= 0) {

midPtr = (leftPtr + rightPtr) / 2;

while(strcmp((*midPtr).value, target) < 0) {

leftPtr = midPtr + 1;

midPtr = (leftPtr + rightPtr) / 2;

}

if (strcmp((*midPtr).value, target) == 0)

return midPtr - array;

}

return -1;

}