zoukankan      html  css  js  c++  java
  • 指针知识(八):函数指针

    c++允许对指向函数的指针进行操作。它的一个重要使用是把一个函数作为参数传给另一个函数。

    声明一个函数指针像声明一个函数原型一样,不过函数名前面插个符号 * ,然后用()扩起来。

    #include <iostream>

    #include <string>

    using namespace std

    int addition (int a, int b)

    {return (a + b) ;} 

    int subtraction (int a, int b)

    {return (a - b) ;}

    int operation(int x, int y, int (*func)(int ,int))

    {

      int g;

      g = (*func)(x, y);

      return g;

    }

    int main()

    {

      int m, n;

      int (*mins)(int, int) = subtraction;

      m = operation(7, 5, addition);

      n = operation(20, m, mins);

      cout<<n<<' ';

     

      return 0;

    }

    输出:8

    上面的例子中,mins是指向函数的指针,有两个 int 类型的参数,它被直接初始化指向 subtraction :

    int (*mins)(int, int) = subtraction;

    这里实际是在定义一个指针变量,这个指针的名字叫做mins,这个指针的类型是指向一个函数,函数的类型是有两个整型参数并返回一个整型值。

    整句话 “int (*mins)(int, int) = subtraction;” 是定义了这样一个指针并把函数subtraction的值赋给它。也就是说有了这个定义后mins就代表了函数subtraction。

    因此括号中的两个int 实际只是一种变量类型的声明,也就是说是一种形式参数而不是实际参数。



  • 相关阅读:
    弦图点染色问题
    BZOJ1098: [POI2007]办公楼biu
    BZOJ1097: [POI2007]旅游景点atr
    BZOJ1068: [SCOI2007]压缩
    BZOJ1055: [HAOI2008]玩具取名
    BZOJ4199: [Noi2015]品酒大会
    BZOJ2527: [Poi2011]Meteors
    BZOJ1493 [NOI2007]项链工厂
    BZOJ1095 ZJOI2007 Hide 捉迷藏
    bzoj1468 Tree
  • 原文地址:https://www.cnblogs.com/guozqzzu/p/3599462.html
Copyright © 2011-2022 走看看