我正在阅读“用 C++ 思考”布鲁斯·埃克尔 (Bruce Eckel) 的书。第 164 页(波兰语版)中的第 3 章是关于函数指针的。
书中的例子:
void * (*(*fp1)(int))[10]
float (*(*fp2)(int,int,float))(int)
double (*(*(*fp3)())[10])()
int (*(*f4())[10])()
你能告诉我我应该如何解释这一点以及这些例子创造了什么,因为我不明白这本书的解决方案吗?
我希望这个棘手的规则能帮助你解开这些难题: http ://c-faq.com/decl/spiral.anderson.html
让我们拿4:int (*(*f4())[10])()
它读取已f4
评估 ( f4()
),然后取消引用 ( (*f4())
) 可以订阅 ( (*f4())[10]
),然后取消引用 ( (*(*f4())[10])
) 并评估以给出int
( int (*(*f4())[10])()
)。
因此,它是一个将数组指针返回到返回函数指针的函数int
。