C语言 函数指针的调用格式
(*函数指针变s)([实参表])
例如,上例中定义的指针fp已经指向了函数max(),则利用fp调用max()的形式为:
(*fp)(a,b);
其中a、b是实参,在函数调用前,已经有确定的值。
【例题】求最大值
定义一个指向函数的指针,使之指向函数max(), max()的功能为求两个数的最大值。
程序代码如下:
#include <stdio.h>
int max(int a,int b);
main()
{
int nl,n2,maxl;
int (*fp)();
fp=max;
printf("input two numbers:\n");
scanf("%d%d", &nl, &n2);
maxl=(*fp)(nl,n2);
printf("max=%d\n", max1);
}
int max(int a,int b)
{
return(a>b?a:b);
}
程序运行,屏幕提示信息:
input two numbers:
输入两个整数:
23 78
输出结果为:
max=78
程序中,语句int(*fp)();为定义语句,定义fp为指向函数的指针。
max为函数名,也代表了函数在内存中的起始地址,当使用语句fp=max;使指针fp指向max()函数后,fp指针也得到了函数max()的首地址。之后,在需要调用max()函数时,直接使用fp指针即可找到max()函数在内存中的起始地址,从起始地址的第一条指令开始执行。
这样一来,对于调用函数,除了直接使用函数名调用外,也可以使用指向函数的指针来调用。
点击加载更多评论>>