int find(int *p,int n,int b)
{
int i=0
while(i<n)
{
if(*p++==b)
return i
i++
}
return -1
}
int main()
{
int k
int a[]={1,2,3,4,5}
int b
printf("输入要查找的数:")
scanf("%d",&b)
k=find(a,sizeof(a),b)
if(k==-1){
printf("数组中没有这样的值\n")
}else{
printf("下标=%d\n",k)
}
return 0
}
不用万分感谢,只要十分感谢即可。对于函数:int* find(int a[], int value),其中a为整型数组首地址,value是被检验值。我们可以利用指针a间接引用数组第一个元素的值,并将其与value比较,比较完后,将指针向后移动,再通过间接引用的方式比较下一个元素值,依次下去,直到在整型数组中找到被检验值或者整型数组所有元素比较结束为止。
那么这里有个问题,我们如何通过指针知到整型数组什么时候结束呢?对于整型数组而言,没有办法,所以我们必须先知道整型数组的长度,可以在参数中给出,也可以在主函数定义中知晓。
程序如下:
int* find(int a[], int value)
{
int i=0,*p=a
for(i=0i<=9i++)
{
if(*p==value)
return p
else
p++
}
if(i>=10)
return 0
}
main()
{
int c[10]={1,2,3,4,5,6,7,8,9,0}
int n
scanf("%d",&n)
printf("%x %d",find(c,n),*(find(c,n)))/*第一个为函数返回地址,第二个为函数返回地址里的值*/
getch()
}
另外,我们测试一个程序或者函数是否正确不在于其能否正确运行,而在于其运行的结果是否符合我们的预期。针对上述程序,测试方法如下:
输入任意一个数,如果这个数在数组C内,看是否能够打印出16进制的地址数和与输入值相同的数;如果不在数组C内,看是否返回值为0的地址。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)