(1)float (**p)(10); //这个是否有笔误(圆括号->方括号)?感觉像指向flat f(int)的函数指针的指针,且在以参数为10调用;如果确定没有笔误是个声明,那么可以解读为p为float f(int a = 10)这样函数类型的函数指针的指针
(2)double *(*p)[10]; //p是一个指向长度为10的,存放类型为double*的数组指针(也就是p是个指针,指向一个数组,该数组长度为10,类型为double*)
(3)double (*p[10])();//p是长度为10的,存放类型为double (*f)()这样的函数指针类型的指针数组(也就是p是个指针数组,该数组长度为10,类型为double (*f)()这样的函数指针)
(4)int *((*p)[10]);//同(2),[]优先级高于*,所以外层圆括号有没有是一个效果
(5)int (*(p)(int,int))(int);//p是一个void* f1(int,int)的指针函数,该指针函数返回一个指向int (*f2)(int)函数类型的指针
个人理解供参考。
一般复杂的指针定义,建议用typedef