Pet*_*etr 2 c pointers function-pointers function
我有这个程序,我得到了:
左值作为赋值的左操作数
因为这条线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);
}
Run Code Online (Sandbox Code Playgroud)
我想设置function_a
为function_b
功能set_a
.所以我期待输出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;
}
Run Code Online (Sandbox Code Playgroud)