在函数doubleadd中,我希望结果为x和函数add的总和
#include <stdio.h>
int add(int a,int b)
{ return (a+b); }
int doubleadd(int x,int y=(*add)(int a,int b))
{ return (x+y); }
void main()
{
void (*ptr)(int,int);
ptr=add;
int y=ptr(5,7);
printf("%d",y);
y=doubleadd(3,ptr(5,7));
}
请帮我解决这个问题
答案 0 :(得分:2)
你不需要做那么多事情!这没关系:
y = doubleadd(3, add(5,7));
和doubleadd的原型是
int doubleadd(int x, int y) { ... }
您也可以将复杂表达式作为参数传递
答案 1 :(得分:1)
如果您想将C代码变成某种功能语言的混蛋,那么
#include <stdio.h>
typedef int (*addfun)( int a, int b );
int add(int a,int b) {
return a + b;
}
int doubleadd(int x, addfun f, int a, int b ) {
return x + f( a, b );
}
int main() {
addfun fn = add;
int y = doubleadd(3, fn, 5, 7 );
printf( "%d\n", y );
}