【问题标题】:How to assign function pointer to a function如何将函数指针分配给函数
【发布时间】:2017-04-04 21:56:53
【问题描述】:

我有这个程序,我得到:

需要左值作为赋值的左操作数

因为function_a = function这一行。

int function_a(int j){
    return j+10;
}

int function_b(int j){
    return j;
}

void set_a(int (*function)(int)){
    function_a = function;
}

int main(){
    int a = function_a(2);
    printf("%d, ", a);

    set_a(function_b);

    int b = function_a(2);
    printf("%d", b);
}

我想在函数set_a 中将function_a 设置为function_b。所以我期待输出12, 2。我应该怎么做才能正确分配这个?

【问题讨论】:

  • 到目前为止,您在尝试解决问题方面做了哪些工作?
  • @narusin 该死的,它不会让我对评论投反对票:-(

标签: c function pointers function-pointers


【解决方案1】:

函数定义不能用赋值代替,即函数定义不是可以赋值的左值,这就是你得到错误的原因;但是你可以定义一个函数指针并分配不同的函数定义,然后调用函数指针,就好像它是一个普通函数定义意义上的函数:

int function_a(int j){
    return j+10;
}

int function_b(int j){
    return j;
}

int (*f)(int) = function_a;

void set_a(int (*function)(int)){
    f = function;
}


int main(int argc, const char *argv[])
{

    int a = f(2);
    printf("%d, ", a);

    set_a(function_b);

    int b = f(2);
    printf("%d", b);

    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多