指向函数的指针变量的一般形式为:
数据类型 (*指针变量名)(函数参数表列);
如: int (*p)(int ,int );
1、int (*p)(int ,int );表示定义一个指向函数的指针变量p,它不是固定只能指向某一个函数。在一个程序中,一个指针变量可以先后指向同类型的不同函数。
2、给函数指针赋值时,只须给出函数名而不必给出参数。
如: p=max;如果写成 p=max(a,b); 是将函数max(a,b);所得到的函数值赋给p,而不是将函数入口赋给p。
3、用函数指针变量调用函数时,只须将(*p)代替函数名即可。如: c=(*p)(a,b);
4、指向函数的指针变量,像p+n、p++、p--等运算是无意义的。
代码:
输入两个整数,然后用户选择1或2,选1输出较大值,选2输出较小值。
程序代码:
#include<stdio.h>
void main()
{
int max(int ,int );
int min(int ,int );
int (*p)(int ,int );
int a,b,c,n;
printf("please enter a and b:");
scanf("%d%d",&a,&b);
printf("please choose 1 or 2:");
scanf("%d",&n);
if(n==1)
p=max;
else if(n==2)
p=min;
c=(*p)(a,b);
printf("a=%d,b=%d,",a,b);
if(n==1)
printf("max=%d\n",c);
else
printf("min=%d\n",c);
}
int max(int a,int b)
{
return a>b?a:b;
}
int min(int a,int b)
{
return a<b?a:b;
}
void main()
{
int max(int ,int );
int min(int ,int );
int (*p)(int ,int );
int a,b,c,n;
printf("please enter a and b:");
scanf("%d%d",&a,&b);
printf("please choose 1 or 2:");
scanf("%d",&n);
if(n==1)
p=max;
else if(n==2)
p=min;
c=(*p)(a,b);
printf("a=%d,b=%d,",a,b);
if(n==1)
printf("max=%d\n",c);
else
printf("min=%d\n",c);
}
int max(int a,int b)
{
return a>b?a:b;
}
int min(int a,int b)
{
return a<b?a:b;
}
运行结果:
实用价值在于在应用程序中常用菜单提示输出一个数字,然后根据不同值执行不同的功能,就是用此法。