请教#c语言,主函数中调用哪里出错?

程序无法运行,请问主函数中要如何正确调用f函数呀

#include <stdio.h>
double f(int n,double a[],double x)
{
    int i;
    double p=a[n];
    for (i=n;i>0;i--)
    {
        p=a[i-1]+x*p;
    }
    return p;
}

void printf_f(double p)
{
    printf("%f",p);
}
int main()
{
    int n=2;
    double p,a[]={1,2},x=4;

    p=f(n,a[1],x);
    printf_f(p);

    return 0;
} 

p=f(n,a[1],x);
double p=a[n];
数组下标从0开始到n-1结束,你去访问a[n]明显越界了

数组调用也不对,a[1]传这个干吗

p=f(n,a[1],x); 改为 p=f(n,a,x);