指向函数的指针

指向函数的指针变量的一般形式为:
数据类型   (*指针变量名)(函数参数表列);
如:  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 ",c);
    else
        printf("min=%d ",c);
}


int max(int a,int b)
{
    return a>b?a:b;
}

int min(int a,int b)
{
    return a<b?a:b;
}
 

运行结果:

 

 

 
实用价值在于在应用程序中常用菜单提示输出一个数字,然后根据不同值执行不同的功能,就是用此法。
原文地址:https://www.cnblogs.com/vitah/p/4605513.html