double (*fun[3])();
powyższy zapis prezentuje tablice 3 wskaźników na funkcje zwracającą wartość typu double oraz nie przyjmująca żadnych argumentów podczas wywołania (czyli mówiąc dobrze rozumiesz zapis ale nie powiedziałeś o tym że funkcja taka nie przyjmuje żadnych argumentów).
double (*(*wsk_fun))();
Zaś ten zapis to "wskaźnik na wskaźnik do funkcji" zwracający wartość typu double oraz nie przyjmujący żadnych argumentów. Inaczej mówiąc przechowuje on adres wskaźnika na funkcje.
double fun()
{
return 2.5;
}
int main()
{
double (*(*wsk_fun))(); // wskaźnik na wskaźnik do funkcji
double (*wsk)(); // wskaźnik do funkcji
wsk = fun; // wskaźnik wsk wskazuje na funkcje fun
wsk_fun = &wsk; // wskaźnik na wsk. wskazuje teraz na wskaźnik do funkcji
cout << (**wsk_fun)(); // wywołanie funkcji za pomocą wsk. na wsk. do funkcji
return 0;
}