C 语言 search() 函数指南366


在 C 语言中,search() 函数用于在数组或链表等线性数据结构中查找给定元素。它是一个标准库函数,原型为:```c
void *search(const void *key, const void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
```

函数的参数如下:* `key`: 要查找的元素。
* `base`: 要搜索的数据结构的基址。
* `nmemb`: 数据结构中的元素数量。
* `size`: 每个元素的大小(以字节为单位)。
* `compar`: 比较函数,用于比较关键值和数组元素。

search() 函数使用二分法搜索算法,如果在数据结构中找到与关键值匹配的元素,则返回一个指向该元素的指针。如果没有找到匹配的元素,则返回 NULL。比较函数必须以以下方式定义:```c
int compar(const void *a, const void *b);
```

其中 `a` 和 `b` 是指向两个元素的指针。比较函数应返回一个整数,表示这两个元素之间的关系:* 如果 `a` 小于 `b`,则返回 -1。
* 如果 `a` 等于 `b`,则返回 0。
* 如果 `a` 大于 `b`,则返回 1。

以下是一个使用 search() 函数查找数组中特定元素的示例:```c
#include
#include
int compar(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int key = 5;
int *result;
result = (int *)search(&key, arr, 5, sizeof(int), compar);
if (result != NULL) {
printf("元素已找到: %d", *result);
} else {
printf("元素未找到");
}
return 0;
}
```

上面的程序输出如下:```
元素已找到: 5
```

2024-12-19


上一篇:printf 函数中的 %%d 格式说明符

下一篇:C 语言中输出虚根