一、定义函数指针
void (*funcPtr)();
定义了一个指针指向一个无参无返回值的函数。
如何理解复杂的定义
从中间开始向外扩展。中间即funcPtr。向外扩展,先注意右边最近的项(这里没有,右括号结束了),再注意左边的项(星号指针),右边的空参数表表示这个函数没有带任何参数,再注意左边(void表示函数没有返回值),大多数声明都是以右左右动作的方式工作的。
二、复杂声明和定义
void * (*(*fp1)(int))[10];
float (*(*fp2)(int,int,float))(int);
typedef double (*(*(*fp3)())[10])();
fp3 a;
int (*(*f4())[10])();
int main(){}
如何理解-右左右
fp1是一个指向函数的指针,该函数接受一个整型参数并返回一个指向含有10个void指针数组的指针。
fp2是一个指向函数的指针,该函数接受三个参数(int,int ,float),且返回一个指向函数的指针,该函数接受一个整型变量并返回float。
fp3是一个指向函数的指针,该函数无参数,且返回一个指向含有10个指向函数指针数组的指针,这些函数不接受参数且返回double。然后又说明,a是fp3类型中的一个。
f4是一个返回指针的函数,该指针指向含有10个函数指针的数组,这些函数返回整型值。