一个函数的定义能不能在执行的时候修改?

一个函数的定义能不能在执行的时候修改?

因为它需要的一些参数,只有再读入输入文件之后才能确定。

比如,
 
x=1,函数定义为y=5x;

x=2,函数定义为y[n]=n^2, n=10;

这个函数要被调用很多次,如果每次都在函数内用switch判断,会不会很费时?多谢!
 
表驱动状态机
 
举个例子:

f(x, n),当n=0时返回f0(x)...n=k时返回fk(x)...n=9时返回f9(x)

方法1:

可以写一个int f(int x, int n)

里面switch n,然后case 0~9,依次return fn(x)

方法2:

建立一个函数指针的数组:

typedef int (*Tpf)(int);
Tpf pf[10] = {f0, f1, ..., f9};
int f(int x, int n)
{
        return pf[n](x);
}

这样不用case一路的判断了,如果决定下一个状态的参数n不是0~n的整数,写个hush函数把它映射到n个函数指针上。

所以这实际上构造了一个自动机,n就是驱动自动机的状态表状态转移的参数。
永不止步步 发表于02-15 10:53 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:345377个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号