我编写了下列函数,但是在隐形的时候出现了segmentation fault
#define m 20
#include
#include
int compar (const void *a ,const void *b)
{
int *aa=(int * ) a,*bb = (int * )b;
if( * aa >* bb)return 1;
if( * aa == * bb) return 0;
if( * aa < *bb) return -1;
}
main( )
{
int base[m],n ;
int i,*key,*itemptr;
printf("input n(n<20)\n");
scanf("%d",&n);
for(i=0;i
scanf("%d",&base[i]);
}
qsort(base,n,sizeof(int),compar);
for(i=0;i
printf("%d ",base[i]);
}
printf("\n");
scanf("%d",key);
itemptr=(int *)bsearch(key,base,20,sizeof(int),compar);
if(itemptr!=NULL)
{
printf("%d is in the table!\n",*key);
}
else
{
printf("%d isn't in the table!\n",*key);
}
}
运行结果如下:
input n(n<20)
4
1 4 2 3
1 2 3 4
1
Segmentation fault
求高手指点指点,谢谢!
Kvlode 于 2011-07-14 21:18:48发表:
楼上高
jayee 于 2011-07-14 17:04:18发表:
搞定 原来是数组与指针地址可否变化的原因