void *bsearch
时间: 2024-10-11 13:12:56 浏览: 36
`void *bsearch()` 是 C 标准库中的一个函数,主要用于在已经排序的内存区域(通常是通过 `qsort()` 等函数事先排序过的)中查找特定值的第一个匹配项。它接收四个参数:需要查找的目标值(`const void *key`),数组首地址(`const void *base`),数组元素大小(`size_t size`),以及一个指向比较函数的指针(`int (*compar)(const void *, const void *)`)。这个比较函数用于确定数组中的元素是否大于、小于或等于目标值,找到相等项的位置。
函数会返回指向匹配项的 `void *` 指针,如果未找到匹配项,则返回 NULL。由于返回的是 `void *`,因此使用者需要根据实际数组中的元素类型手动转换指针。
例如:
```c
#include <stdio.h>
#include <stdlib.h>
int cmpfunc(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main() {
int arr[] = {1, 3, 4, 7, 9, 11};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 7;
void *result = bsearch(&key, arr, n, sizeof(int), &cmpfunc);
if (result != NULL) {
printf("Found %d at position %lu\n", *(int*)result, result - arr);
} else {
printf("Element not found.\n");
}
return 0;
}
```
在这个例子中,`bsearch()` 将查找数字 7,并返回其在数组中的位置。
阅读全文