一个函数指针的有关问题

一个函数指针的问题
请教大家个问题,为什么double * (*p2)(double n);
                                          p2 = f1;
f1为double * f1(double n){ }类型的函数,(*p2)中的*必须有?我知道函数指针声明必须带*的,因此第一种可以理解,
但是cout<<*b(f1);
b的函数为double * b(double *(*p2)(double n)){}中的P2中的*可以省略?
意思是double * b(double *p2(double n)){}和double * b(double * (*p2)(double n)){}是一样的效果,意思是在函数类型声明时候可以省略?
------解决思路----------------------
你好,确实是可以省掉的,因为(*fp)是函数类型,编译器会自动转成指针类型,即fp的形式