C语言之指向函数的指针----防备忘
编程的时候,写的函数,每一个函数都有一个对应的地址。
我们可以设置指向该函数的指针。
(1)指向函数的指针
int max(int temp)
{
printf("运行max:temp=%d\n",temp);
return temp;
}
int main()
{
int (*p)(int); //①定义的指向函数的指针:返回值类型和参数类型要一致,同时注意应为(*p)
int obj;
p=max; //②仅用函数名传递给指针
obj=(*p)(5); //③然后调用时,直接用指针替换函数名
printf("obj=%d\n",obj);
}
①若无返回值,就改为void;
②也可无参数;
(2)指向函数的指针作形参
int max(int temp)
{
printf("运行max:temp=%d\n",temp);
return temp;
}
int min(int a,int b)
{
printf("运行min\n");
return a;
}
int display(,int i,int j,int (*x1)(int),int (*x2)(int,int))
{
int a,b;
a=(*x1)(i);
b=(*x2)(i,j);
return a+b;
}
int main()
{
int obj;
obj=display(4,5,max,min);
printf("obj=%d\n",obj);
}
就是这么个意思,我一直不理解,为何要绕一个这样的弯子,直接调用不是很happy?
这里解释一下:有时候呢,我们希望这一个函数,可以调用好几个不同的函数,比如上面的display,这次调用的max、min,还想让他调用F1、F2。当然,提前把他们的返回值取出来,在带入display也是可以的,但是这样操作的话,把取返回值的操作都放到display里面了,简化了代码。