zoukankan      html  css  js  c++  java
  • 二十、函数指针高级(动态调用)

    1.动态调用是系统普遍支持的技术
    2.要实现动态调用需要一个对应表
    3.示例:使用函数名的字符表调用函数
    函数名  函数指针
    “max”   maxValue
    “min”    minValue
    “avg”    avgValue
    4.动态调用
    PFUN getFunctionFromName(char *name);
    int getValue(int a , int b , char *name);
    5.示例:
    typedef int(*PFUN)(int , int);
    //相当于把int (*)(int , int)改成PFUN
    int sum(int a , int b );
    int sum(int a , int b ){//加法函数
         return a+b;
    }
    int maxValue(int x , int y);
    int maxValue(int x , int y){//最大值函数
         return x>y?x:y;
    }
    int minus(int x , int y);
    int minus(int x , int y){//减法函数
         return x-y;
    }
     
    typedef struct nameFunctionPair{//定义结构体
         char name[20];
         PFUN function;
    }NameFunctionPair;
     
    NameFunctionPair nfs[3] = {//定义一个全局变量的结构体数组
         {“max” , maxValue},{“sum” , sum},{“minus” , minus}
    };
     
    PFUN getFunctionWithName(char *name);
    PFUN getFunctionWithName(char *name){//通过名字获取该名字对应的函数体的功能
         for(int i = 0 ; i < 3 ; i ++){
              if(strcmp(nfs[i].name , name) == 0){
                   return nap[i].function;
              }
         }
         return maxValue;
    }
     
    int getValue(int x , int y , char *functionName);
    int getValue(int x , int y , char *functionName){//获取函数
         PFUN p = getFunctionWithName(functionName);
         return p(x,y)
    }
     
    int main(){
          int a = getValue(10,20,”sum”);//在程序使用过程中,使用字符串是最方便的
          printf(“a=%d ”,a);   
    }
  • 相关阅读:
    关于Generator生成器函数的解析
    vue中router传递与接收参数的简单梳理
    霓虹灯效果
    vuex简单梳理4,actions的用法和其辅助函数
    vuex简单梳理3,Mutations的用法和其辅助函数
    js实现轮询展示
    js实现图片的大小自适应效果
    for循环每次展示固定条数的数据的写法。
    CSS实现背景图尺寸不随浏览器缩放而变化
    javascript之AJAX学习
  • 原文地址:https://www.cnblogs.com/gnhxsk/p/5170691.html
Copyright © 2011-2022 走看看