关于指针函数数组解决办法
关于指针函数数组
比如有一些函数 char* A();char* B();char* C();之类的
我想用const数组储存它们的地址
const ......F[3]={A,B,C};
这个应该怎么写?
还有我想写个返回函数指针的函数
........Fun(const char* str);
调用Fun("A")返回A
有没有什么高效率的写法
------解决方案--------------------
------解决方案--------------------
第二个问题,只能自己作个字典了,用Hash表之类的
------解决方案--------------------
*和F之间
------解决方案--------------------
仅供参考
------解决方案--------------------
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 ;};
比如有一些函数 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之间
------解决方案--------------------
仅供参考
#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 ;};