设置了一些参数的函数指针

时间:2016-09-26 14:39:46

标签: c pointers function-pointers

如何创建一个指向函数的函数指针,其中某些参数设置为在定义上修复。

以下是我的意思:

我们说我有这个功能

int add (int n, int m) {
     return n+m;
}

和函数指针类型

typedef int (*increaser)(int);

我想要的是一个指向函数add的指针,该函数将第一个参数修复为1并使第二个参数保持打开状态。

的内容
increaser f = &add(1,x);

我该如何做到这一点?

2 个答案:

答案 0 :(得分:3)

  

我想要的是一个指向函数add的指针,它将第一个参数修复为1并使第二个参数打开。

在C中没有这样的东西。你最接近的是创建一个包装器函数并指向它:

int add1(int x) {
    return add(1, x);
}

increaser f = &add1;

如果您不需要指向该函数的指针,那么您可以使用宏:

#define increaser(x) add(1, (x))

答案 1 :(得分:1)

C不支持直接执行此操作。在C ++中有std :: function和bind可以实现这一点。

对于纯C解决方案而言,你可以合理地得到的最接近的是定义一个调用add的新函数:

int increment(int input) {
    return add(1, input);
}

然后你可以这样做:

increaser f = &increment;