bsearch 子例程
用途
执行二进制搜索。
库
标准 C 库 (libc.a)
语法
#include <stdlib.h> void *bsearch (Key, Base, NumberOfElements, Size, ComparisonPointer)
const void *Key;
const void *Base;
size_t NumberOfElements;
size_t Size;
int (*ComparisonPointer) (const void *, const void *);描述
bsearch 子例程是二进制搜索例程。
bsearch子程序会搜索一个NumberOfElements对象数组(其初始成员由Base参数指向),以查找与Key参数指向的对象相匹配的成员。 数组中每个成员的大小由 Size 参数指定。
必须已根据提供的比较函数 ComparisonPointer 参数按递增顺序对数组进行排序。
参数
| 项 | 描述 |
|---|---|
| key | 指向要在数组中寻找的对象。 |
| 基本 | 指向表底部的元素。 |
| NumberOfElements | 指定数组中的元素数。 |
| ComparisonPointer | 以该顺序指向比较函数,该比较函数通过指向 Key 参数对象和数组成员的两个自变量进行调用。 |
| 大小 | 指定数组中每个成员的大小。 |
返回值
如果在表中找到 Key 参数值,那么 bsearch 子例程将返回指向找到的元素的指针。
如果在表中找不到 Key 参数值,那么 bsearch 子例程将返回空值。 如果两个成员比较为相等,那么未指定匹配成员。
对于 ComparisonPointer 参数, 比较函数会比较其参数并返回如下值:
- 如果第一个参数小于第二个参数,那么 ComparisonPointer 参数返回小于 0 的值。
- 如果第一个参数等于第二个参数,那么 ComparisonPointer 参数返回值 0。
- 如果第一个参数大于第二个参数,那么 ComparisonPointer 参数返回大于 0 的值。
比较函数不需要对每个字节进行比较,因此除了要比较的值外,还可以在元素中包含任意数据。
Key 和 Base 参数应该是 "指针到元素" 类型,并强制转换为 "指针到字符" 类型。 虽然声明为 "指针到字符" 类型,但返回的值应强制转换为 "指针到元素" 类型。