findmax(int *a,int n)
{ int *p,*s;
for(p=a,s=a; p-a<n; p++)
if ( ) s=p;
return(*s);
}
main()
{ int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
括号内我缺一个条件没加,就是求最大值的,麻烦给解释下谢谢了
findmax(int *a,int n)
{ int *p,*s;
for(p=a,s=a; p-a<n; p++)
if ( ) s=p;
return(*s);
}
main()
{ int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
括号内我缺一个条件没加,就是求最大值的,麻烦给解释下谢谢了
findmax参数:
整型数组a(一个指针,实际上是第一个元素的内存地址);
数组元素个数n。
过程:
int *p,*s; //定义两个整型指针
for(p=a,s=a; p-a<n; p++) //s用来临时指向最大的那个数的内存地址,初值s=a使它指向第一个数组元素,p指针遍历a到a+n这段内存(p++是内存地址加1,使p指向下一个内存)
if (*p>*s ) s=p; //如果p所指向的内存里的数据比s的大,则让s指向p所指向的内存(将p所指的内存地址赋给s)
//整个for循环完之后,s就指向数组里数值最大的那个元素的内存了。
return(*s); //返回s所指内存里的数值。
findmax(int *a,int n)
{ int *p,*s;
for(p=a,s=a; p-a<n; p++)
if (*p>=*s ) s=p;
return(*s);
}
main()
{ int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}