C 如何将函数指针指定给函数

C 如何将函数指针指定给函数,c,function,pointers,function-pointers,C,Function,Pointers,Function Pointers,我有这个计划,我得到: 赋值的左操作数需要左值 因为有行function\u 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

我有这个计划,我得到:

赋值的左操作数需要左值

因为有行
function\u 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);
}

我想在function
set_a
中将
function_a
设置为
function_b
。所以我期望输出
12,2
。我应该怎么做才能正确地分配它

赋值不能代替函数定义,也就是说,函数定义不是可以赋值的左值,这就是为什么会出现错误;但您可以定义函数指针并指定不同的函数定义,并调用函数指针,就像调用普通函数定义意义上的函数一样:

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;
}

到目前为止,你在试图解决你的问题方面做了什么?@narusin damn,它不会让我否决这一评论:-(