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

C 设置了一些参数的函数指针,c,pointers,function-pointers,C,Pointers,Function Pointers,如何创建指向函数的函数指针,其中一些参数设置为固定在定义上 下面是一个例子,我的意思是: 假设我有这个函数 int add (int n, int m) { return n+m; } 和函数指针类型 typedef int (*increaser)(int); 我想要的是一个指向函数add的指针,该函数将第一个参数固定为1,并使第二个参数保持打开状态。类似于 increaser f = &add(1,x); 我怎样才能做到这一点 我想要的是一个指向add函数的指针,它将

如何创建指向函数的函数指针,其中一些参数设置为固定在定义上

下面是一个例子,我的意思是:

假设我有这个函数

int add (int n, int m) {
     return n+m;
}
和函数指针类型

typedef int (*increaser)(int);
我想要的是一个指向函数
add
的指针,该函数将第一个参数固定为1,并使第二个参数保持打开状态。类似于

increaser f = &add(1,x);
我怎样才能做到这一点

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

C中没有这样的东西。最接近的方法是创建一个包装器函数并创建指向该函数的指针:

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

increaser f = &add1;
如果不需要指向函数的指针,则可以使用宏:

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

C不支持直接这样做。在C++中,有STD::Fuffic和Band,可以实现这一点。 尽管如此,对于纯C解决方案,您可以合理地得到的最接近的方法是定义一个调用add的新函数,如:

int increment(int input) {
    return add(1, input);
}
然后你可以做:

increaser f = &increment;

编写包装器..C没有闭包。我不会调用函数类型
increaser
。对我来说,它相当于一个
一元运算符
,因为实现此签名的函数可以做完全不同的事情。