还是c语言的,很简单的问题,为什么它的答案是29啊,是不是我用指针传值的方法不对啊?

来源:百度知道 编辑:UC知道 时间:2024/09/25 00:40:41
#include"stdio.h"
void main(){
int max(int a[],int n);
int a1[]={23,45,22,53,14,24,64};
int *p1,n,i;
p1=a1;
n=7;
printf("\n%d",max(p1,n));
getch();
}
int max(int a[],int n)
{
int *p,j,ma;
p=a;
ma=0;
for(j=0;j<n;j++)
if(ma<*p+j)
ma=*p+j;

return ma;
}

*的优先级比+高,所以*p+j实际上是将p指向的元素值加上j,正确的应该是*(p+j)

返回值是值类型,建议用引用类型试一试

不知道你为什么搞的那么复杂,在形式参数中指针和数组是一样的,何必再复制一次呢,当然最后错误出在*p+j上了,如楼上所说正确的应该是*(p+j)