指向函数的指针变量的一般形式为:
数据类型 (*指针变量名)(函数参数表列);
如:
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;
}
运行结果:
实用价值在于
在应用程序中常用菜单提示输出一个数字,然后根据不同值执行不同的功能
,就是用此法。