C-如何将数组中的指针转换为索引?

C-如何将数组中的指针转换为索引?,c,pointers,indexing,pointer-arithmetic,C,Pointers,Indexing,Pointer Arithmetic,在C的许多搜索函数中(我想到的是bsearch),如果找到一个结果,就会返回一个指向数组中的点的指针。如何将此指针转换为已搜索数组中的索引(我假设使用指针算法)。如果数组的类型为void,则会收到编译警告。所以它不知道如何正确地做减法。最后我将两者都转换为(char*),减法,然后除以元素的大小。虽然没有类型为void的数组,但有类型为void的指针@hatorade将指针转换为数组元素的类型,但我不确定这是否有效。例如:intarr[…];void*p=&arr[1];大小指数=(int*)p

在C的许多搜索函数中(我想到的是bsearch),如果找到一个结果,就会返回一个指向数组中的点的指针。如何将此指针转换为已搜索数组中的索引(我假设使用指针算法)。

如果数组的类型为void,则会收到编译警告。所以它不知道如何正确地做减法。最后我将两者都转换为(char*),减法,然后除以元素的大小。虽然没有类型为
void
的数组,但有类型为
void
的指针@hatorade将指针转换为数组元素的类型,但我不确定这是否有效。例如:
intarr[…];void*p=&arr[1];大小指数=(int*)p-arr为什么使用
size\u t
而不使用
ptrdiff\u t
ptrdiff_t index = pointer_found - array_name;