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,它不会让我否决这一评论:-(