数组名作为函数的参数
在主函数中,数组名a[ ]作为函数Bsearch的实参,在函数Bsearch中访问数组a的存储单元,既可以引用,又可以改变单元的内容,返回主函数后,数组元素的值就改变了。
*p相当于a[ ];
p[mid] 可改写为*[p+mid]。
#include<stdio.h>
//二分查找
int Bsearch(int *p,int n,int x);
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int x,m;
printf("enter x: ");
scanf("%d",&x);
m=Bsearch(a,10,x);
if(m>=0)
printf("index is %d \n",m);
else
printf("not found\n");
return 0;
}
//数组名作为函数的参数
int Bsearch(int *p,int n,int x)//这里的*p相当于p[]
{
int low,high,mid;
low=0;
high=n-1; //开始查找区间为整个数组
while(low<high)
{
mid=(low+high)/2;
if(x==p[mid]) //根据与中间元素的比较,产生新的low,high值。
break;
else if(x<p[mid])
high=mid-1;
else
low=mid+1;
}
if(low<=high)
return mid; //找到返回下标
else
return-1; //找不到返回-1
}
//enter x: 9
//index is 8
391





