首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于指针函数数组解决办法

2013-03-06 
关于指针函数数组比如有一些函数 char* A()char* B()char* C()之类的我想用const数组储存它们的地址con

关于指针函数数组
比如有一些函数 char* A();char* B();char* C();之类的

我想用const数组储存它们的地址
const ......F[3]={A,B,C};
这个应该怎么写?

还有我想写个返回函数指针的函数
........Fun(const char* str);
调用Fun("A")返回A 

有没有什么高效率的写法
[解决办法]


char* (*F[])() = {A, B, C};

[解决办法]
第二个问题,只能自己作个字典了,用Hash表之类的
[解决办法]
*和F之间
引用:
char* (*F[])() = {A, B, C};
这个const 应该加到什么地方?

[解决办法]
仅供参考
#include <stdio.h>
double A[300][100];
double valuex[300];
double valuey[300];
int i;
double fun00(double x,double y) {return x  +   y  ;};
double fun01(double x,double y) {return x*x+ 3*y  ;};
double fun02(double x,double y) {return x  + 2*y*x;};
//...  fun03(double x,double y) {return ...+...   ;};
//...
//...  fun98(double x,double y) {return ...+...   ;};
double fun99(double x,double y) {return x/2+20*y  ;};
double (*funNN[100])(double,double)={
    fun00,
    fun01,
    fun02,
//  fun03,
//  ...
//  fun98,
    fun99,
};
int main() {
    double x,y;
    int f,FN;

    for (i=0;i<300;i++) {
        valuex[i]=(double)i;
        valuey[i]=(double)i;
    }
    FN=3;
    for (i=0;i<300;i++) {
         x=valuex[i];
         y=valuey[i];
         for (f=0;f<FN;f++) A[i][f]=funNN[f](x,y);
    }
    for (i=0;i<3;i++) {
        for (f=0;f<FN;f++) printf("%lg ",A[i][f]);
        printf("\n");
    }
    return 0;
}
//0 0 0
//2 4 3
//4 10 10

[解决办法]
FunMap<char*, pFun> pFunMap;

double fun00(double x,double y) {return x  +   y  ;};
double fun01(double x,double y) {return x*x+ 3*y  ;};
double fun02(double x,double y) {return x  + 2*y*x;};
//...  fun03(double x,double y) {return ...+...   ;};
//...
//...  fun98(double x,double y) {return ...+...   ;};
double fun99(double x,double y) {return x/2+20*y  ;};



pFunMap.push("fun00", &fun00);
//.................
pFunMap.push("fun99", &fun99);

(pFunMap.find("fun00")->sencond)(x, y);
[解决办法]
这两个问题都可以直接定义结构体进行
[解决办法]


typedef char *(*FUNC_TYPE)();

const FUNC_TYPE f[] = {A,B,C}

热点排行