如何找出复杂的声明器,如Essential c++ Ch2.8
how to figure out the complex declarators such as Essential C++ Ch2.8
示例代码:
const vector<int>* (*seq_array[])(int) = {
fibon_seq, lucas_seq, pell_seq,
triang_seq, square_seq, pent_seq
};
i一步步算出来:
*seq_array[]
is是指针数组(*seq_array[])(int)
是带int
参数的函数
3。因此,const vector<int>* (*seq_array[])(int)
是一个指针函数,返回const vector<int>
类型和int
参数。
如果我的理解是正确的,那么我在这个函数中找不到任何return
语句。如果没有,任何人都可以指出我的错误,并给出一些关于复杂声明器的指导。
seq_array
是i) 一个数组 ii)函数指针的 iii) 接受一个int
并返回const vector<int>*
。了解发生了什么最简单的方法之一是遵循所谓的螺旋规则。在我看来,这是最好的记忆方法之一,即使是从1994年开始的。
你有一个函数指针数组,所以= { ... }
位内的东西是一个匹配预期签名的函数列表;这就是为什么没有return
语句:它是一个带值的数组,而不是函数定义。