首页 > 其他 > 详细

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

时间:2016-01-30 13:41:11      阅读:224      评论:0      收藏:0      [点我收藏+]
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);   
}

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

原文:http://www.cnblogs.com/gnhxsk/p/5170691.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!