c++指向数组的指针

我昨天看书看到c++里面有个指向数组的指针,**

```
const double *(*pa[3])(const double *, int) = {f1,f2,f3};

```**
我有点不理解,这个和直接用数组名当指针有什么区别啊,这个指针真的指向的是这一整个数组嘛?

这是三个函数指针的数组。函数指针只能这么定义,没法像数组一样写成int a[3]

这个是定义了3个元素的函数指针数组。
简单示例:


int main()
{
    const double *f1(const double *, int);
    const double *f2(const double *, int);
    const double *f3(const double *, int);

    const double *(*pa[3])(const double *, int) = {f1, f2, f3};
    double a = 1024;
    int b = 123;
    for (int i = 0; i < 3; i++)
        pa[i](&a, b);
}
const double *f1(const double *a, int b)
{
    cout << "f1: " << *a + b << endl;
    return a;
}

const double *f2(const double *a, int b)
{
    cout << "f2: " << *a - b << endl;
    return a;
}

const double *f3(const double *a, int b)
{
    cout << "f3: " << *a * b << endl;
    return a;
}