永发信息网

C语言程序bsearch函数的一些疑问

答案:2  悬赏:40  手机版
解决时间 2021-04-28 15:00

#include<stdio.h>
#include<stdlib.h>
#define MAX 20
int intcmp(const void *v1,const void *v2);
int main(void)
{
int arr[MAX],count,key,*ptr;
printf("Enter %d integer values; press Enter after each.\n",MAX);
for(count=0;count<MAX;count++)
scanf("%d",&arr[count]);
puts("Press Enter to sort the values.");
getc(stdin);
qsort(arr,MAX,sizeof(arr[0]),intcmp);
for(count=0;count<MAX;count++)
printf("\narr[%d]=%d.",count,arr[count]);
puts("\nPress Enter to continue.");
getc(stdin);
printf("Enter a value to search for:");
scanf("%d",&key);
ptr=(int*)bsearch(&key,arr,MAX,sizeof(arr[0]),intcmp);
if(ptr!=NULL)
printf("%d found at arr[%d].",key,(ptr-arr));
else
printf("%d not found.",key);
getch();
getch();
}
int intcmp(const void *v1,const void *v2)
{
return(*(int*)v1-*(int*)v2);
}

intcmp  没有实参???为什么还能算??

bsearch 最后一个参数不是函数指针么??

bsearch 有排序功能么???

最佳答案

intcmp函数在besearch和qsort函数中被调用,实际的参数就是之前传入这两个函数的一个数组和长度。bsearch函数没有排序功能,但是要求查找的数组是已经排序的所以之前调用了排序函数。

全部回答

bsearch里面的intcmp就是intcmp函数代表的地址,虽然这里面没有实参,但是在bsearch的内部会调用intcmp地址处的函数,然后再把预订好的实参传递进去。

我没有使用过这个函数,但从代码的角度来看,之前使用了qsort,bsearch应该不具备排序功能。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
泰安市红十字会服务中心卫生所在哪里啊,我有
怎么有漠生人知道我的QQ号?
QQ侠义道2中昆仑五大场景是什么??
天羽传奇游戏问题
有时QQ里鼠标点不动啦咋的
数学好的请进,急急
QQ会员的消息漫游.
请问!摄取过多的维生素C也会生病吗?
我想买点提神点的咖啡
清真原味羊肉汤馆怎么去啊,有知道地址的么
战地4四种版本到底该买哪个
求剧情好的动漫
怎么制作个性照片
怎么样才能去掉黑眼圈饿?
有谁知道山西长治哪所高中最好啊?
推荐资讯
介绍一下武汉哪里有风景较好的地方可以坐摩天
分区磁盘空间不足
成长的意义英语作文,关于成长的作文
怎么弄拒绝加别人
读卡器一个大约多少钱?要去哪里买?
QQ炫舞花园里的花如何设置保护期?
高中物理竞赛用书及经验四川
今年圣诞送什么好?
谁帮我跑剧情
我该怎么办,天天好烦
几道化学题,顺便说下解题思路~
毕业祝福的经典句子,祝别人发财 用什么合适的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?