#include<stdio.h>
#include <string.h>
#include <windows.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int o_num(int x[],int y,int z);
int o_num(int x[],int y,int z){
int i,q,ri,le,mid;
for(i=0;i<=z;i++)printf("%d ",x[i]);
printf("\n");
printf("%d ",sizeof(x[0]));
ri=z-1;
le=0;
while(le<=ri){
mid=(ri+le)/2;
if(x[mid]>y)ri=mid-1;
else if(x[mid]<y)le=mid+1;
else {return mid;
}
}
return 0;
}
int main()
{int i,q,n,a[]={1,2,3,5,7,9,10};
q=sizeof(a)/sizeof(a[0])-1;
printf("enter the number you want:>\n");
scanf("%d",&n);
int result=o_num(a,n,q);
if(result!=0)printf("找到了,下标是%d",result);
else
printf("没有这个数");
}
需要注意的是调用函数中的数组int x[]只是指向了原函数的首元素地址。可以把这个int x[]理解做指针的作用。这就是28行的代码不能写在调用函数里的原因。