如何找出复杂的声明器,如Essential c++ Ch2.8

how to figure out the complex declarators such as Essential C++ Ch2.8

本文关键字:Essential c++ Ch2 何找出 复杂 声明      更新时间:2023-10-16

示例代码:

  const vector<int>* (*seq_array[])(int) = {
   fibon_seq, lucas_seq, pell_seq,
   triang_seq, square_seq, pent_seq
   };

i一步步算出来:

  1. *seq_array[] is是指针数组

  2. (*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语句:它是一个带值的数组,而不是函数定义。