zoukankan      html  css  js  c++  java
  • 返回指向函数的指针

    函数可以返回指向函数的指针,但是,正确写出这种返回类型相当不容易:

    1     // ff is a function taking an int and returning a function pointer 
    2      // the function pointed to returns an int and takes an int* and an  int 
    3      int (*ff(int))(int*, int);

    阅读函数指针声明的最佳方法是从声明的名字开始由里而外理解。

    要理解该声明的含义,首先观察:
    ff(int)
    将 ff 声明为一个函数,它带有一个 int 型的形参。该函数返回
    int (*)(int*, int);
    它是一个指向函数的指针,所指向的函数返回 int 型并带有两个分别是int* 型和 int 型的形参。

    以上文字摘自《C++ Primer》,其实有一个方法理解起来更简单:

    将ff(int)看成一个变量,假设为p,那么上面这个函数就变成:

    1 int (*p)(int*, int);   //ff(int)被看作一个整体p

    这样就一目了然,p是一个指向函数的指针,它指向的函数有两个参数,分别是int *和int型,该函数的返回类型是int。这是其一。

    其二:因为p此时代表的实际上是:ff(int),所以,可以理解为p是ff(int)函数的返回值。

    综合起来解释就是:ff(int)函数返回一个指针,这个指针指向一个函数,该函数“有两个参数,分别是int *和int型,该函数的返回类型是int”。

  • 相关阅读:
    [洛谷2397]yyy loves Maths VI
    subs函数
    JSON 对象和字符串
    JSON添加注释的问题
    给定一个数组求里面数字拼在一起组成的最小数字
    为什么集合类没有实现Cloneable和Serializable接口
    Java 接口
    Unicode(统一码、万国码、单一码)
    meta 中的属性viewport
    meta标签
  • 原文地址:https://www.cnblogs.com/tingshuixuan2012/p/2991586.html
Copyright © 2011-2022 走看看