int (*fun(int))(int)
分析以上代码 int ( *fun(int) ) (int) 其中 *fun(int) 是一个指针函数,它本质是一个函数。函数返回类型是某一类型的指针。
首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。
在这行代码中,这个返回的地址值被强制转化为一个函数指针,指向一个函数,这个函数的参数是int型,返回值也是int型。
int (*foo(int))[]
与第一行不同的是,这个返回地址值被强制转化为一个指向数组的指针。
int (*foo[])(int)
数组foo里存储的是指向函数的指针