函数c中的函数

时间:2011-06-06 17:34:51

标签: c

在函数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));
}

请帮我解决这个问题

2 个答案:

答案 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 );
}