C++ 指向函数的困难指针
我正在读《用C++思考》一书。第164页(波兰语版)的第3章是关于函数指针的 书中的例子:C++ 指向函数的困难指针,c++,function,C++,Function,我正在读《用C++思考》一书。第164页(波兰语版)的第3章是关于函数指针的 书中的例子: void * (*(*fp1)(int))[10] float (*(*fp2)(int,int,float))(int) double (*(*(*fp3)())[10])() int (*(*f4())[10])() 你能告诉我该如何解释这一点吗?因为我不理解这本书的解决方案,这些例子产生了什么?我希望这条棘手的规则能帮助你解开这些难题: 我希望这条棘手的规则能帮助你解开这些难题: 让我们拿4:in
void * (*(*fp1)(int))[10]
float (*(*fp2)(int,int,float))(int)
double (*(*(*fp3)())[10])()
int (*(*f4())[10])()
你能告诉我该如何解释这一点吗?因为我不理解这本书的解决方案,这些例子产生了什么?我希望这条棘手的规则能帮助你解开这些难题:
我希望这条棘手的规则能帮助你解开这些难题: 让我们拿4:
int(*(*f4())[10])()
它读取f4
求值(f4()
),然后取消引用((*f4())
)可以订阅((*f4())[10]
),然后取消引用((*f4())[10])
)并求值以给出int
(int(**f4())[10()
)
因此,它是一个返回数组指针的函数,指向返回int
的函数指针。让我们看4:int(*(*f4())[10])()
它读取f4
求值(f4()
),然后取消引用((*f4())
)可以订阅((*f4())[10]
),然后取消引用((*f4())[10])
)并求值以给出int
(int(**f4())[10()
)
因此,它是一个函数,返回数组指针到返回
int
Usecdecl
的函数指针。这不是一个有趣的问题。我强烈反对“用C++思考”需要知道这一点的观点。cdecl.org很酷,但英语对C的胡言乱语会更酷。@john它确实做了英语对C的胡言乱语。试试看。使用cdecl
。这不是一个有趣的问题。我强烈反对“用C++思考”需要知道这一点的观点。cdecl.org很酷,但英语对C的胡言乱语会更酷。@john它确实做了英语对C的胡言乱语。试试看。