作业帮 > 综合 > 作业

如何定义指向函数的指针?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/03 09:37:39
如何定义指向函数的指针?
如何定义一个指向函数的指针?如何通过指向函数的指针来计算函数值?
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址.
#include
int max(int x,int y){ return(x>y?x:y); }
void main()
{
int (*ptr)(int, int);
int a,b,c;
ptr=max;
scanf("%d,%d",&a,&b);
c=(*ptr)(a,b);
printf("a=%d,b=%d,max=%d",a,b,c);
}
ptr是指向函数的指针变量,所以可把函数max()赋给ptr作为ptr的值,即把max()的入口地址赋给ptr,以后就可以用ptr来调用该函数,实际上ptr和max都指向同一个入口地址,不同就是ptr是一个指针变量,不像函数名称那样是死的,它可以指向任何函数,就看你想怎么做了.在程序中把哪个函数的地址赋给它,它就指向哪个函数.而后用指针变量调用它,因此可以先后指向不同的函数.不过注意,指向函数的指针变量没有++和--运算,用时要小心.
具体可以看百度百科