利用指针求最大值最小值,这个代码报错该怎么调

显示[Error] cannot convert 'double**' to 'double*' for argument '3' to 'void y(double*, int, double*, double*, double*)'该怎么调
输入示例:
5
1 2 3 4 5
输出示例:
max:5.00
min:1.00
aveg:3.00

#include
int i,n;
void y(double a[],int n,double *max,double *min,double *aveg)
{
    *aveg=*max=*min=a[0];
for(i=0;iif(a[i]>*max)
            *max=a[i];
        if(a[i]<*min)
            *min=a[i];
        *aveg+=a[i];
    }
*aveg=*aveg/n;
}
int main()
{
    double *max,*min,*aveg,a[n];
scanf("%d",&n);
for(i=0;iscanf("%lf",&a[i]);
    }
y(a,n,&max,&min,&aveg);
printf("max:%.2lf\nmin:%.2lf\naveg:%.2lf\n",max,min,aveg);
return 0;
}

main里的 double *max,*min,*aveg 这几个指针没有分配地址,调用时又加了&,对应的形参类型需要double **才可以。
这几个变量前不需要加星号。
a[n]的定义放到输入n之后,输入n之前n的值未知。