指向函数的指针的一般形式为:
类型声明符 (*指针变量名)();
“类型声明符”表示被指函数的返回值的类型;“(*指针变量名)”表示 “*” 后面的变量是定
义的指针变量;“()”表示指针变量所指的是一个函数。
好处:提高程序的通用性和可适应性。
C语言程序是由若干个函数组成的,每个函数在编译链接后总是占用一段连续的内存区,
而函数名是该函数所占内存区的入口地址,每个入口地址就是函数的指针。在程序中可
以定义一个指针变量用于指向函数,然后通过该指针变量来调用它所指的函数。
使用函数指针变量还应该注意一下两点:
1.函数指针变量不能进行算术运算,这与数组指针变量不同。数组指针变量加减一个
整数可是指针移动指向后面或前面的数组元素,而函数指针的移动毫无意义。
2.函数调用中“(*指针变量名)”两边的括号不可少,其中的*不应该理解为求值运算,
在此它只是一个表示符号。
#include <stdio.h>
int add(int a,int b);
int sub(int a,int b);
int mul(int a,int b);
int div(int a,int b);
void result(int(*pf)(),int a,int b);
main()
{
int i,j;
int (*pf)();
printf("input two integer i,j");
scanf("%d,%d",&i,&j);
pf=add;
result(pf,i,j);
pf=sub;
result(pf,i,j);
pf=mul;
result(pf,i,j);
pf=div;
result(pf,i,j);
printf("\n");
}
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int mul(int a,int b)
{
return a*b;
}
int div(int a,int b)
{
return a/b;
}
void result(int(*p)(),int a,int b)
{
int value;
value=(* p)(a,b);
printf("%d\t",value);
}