是否有可能从C中的另一个函数返回一个函数?

时间:2016-01-02 11:47:33

标签: c

我在C中有一个项目。在功能adminpanel()中有一些选项,如添加,删除,修改等。每个选项都是一个功能。现在,例如我打电话 add()函数,当它结束时我需要在 adminpanel()函数的乞讨处返回以进行另一个选择。这种情况发生在 delete()等。 是否可以在函数 add(),delete()等中设置为返回值 adminpanel()?如果没有,我必须设置什么作为返回值?

1 个答案:

答案 0 :(得分:2)

可以返回一个函数指针:

int inc( int x ) { return x + 1; }
int dec( int x ) { return x - 1; }

int( * func( int t ) ) ( int )
{
    return t ? &inc : &dec;
}

int test_C( void )
{
    int( *f1 )( int ) = func( 1 ); // f1 = &inc
    int x1 = ( *f1 )( 1 );         // x1 = 2            

    int( *f2 )( int ) = func( 0 ); // f2 = &dec
    int x2 = ( *f2 )( 1 );         // x2 = 0    

    return 0;
}