二十函数指针高级(动态调用)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二十函数指针高级(动态调用)相关的知识,希望对你有一定的参考价值。

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\n”,a);   
}

以上是关于二十函数指针高级(动态调用)的主要内容,如果未能解决你的问题,请参考以下文章

C++面向对象高级编程(下) 第二周笔记 GeekBand

C和指针 第十三章 高级指针话题

c高级语法

C++高级开发之可调用对象functionbind

C++高级开发之可调用对象functionbind

C++高级开发之可调用对象functionbind