/*
指向函数的指针变量
类型名(*指针变量名)(函数参数列表)
类型名是函数的返回值类型
指向函数的指针变量只能指向定义时指定类型的函数
指向函数的指针变量不可以进行加减等运算
用函数名调用函数只能调用指定的一个,指针变量调用可以视情况先后调用不同的同类型函数
*/
#include<stdio.h>
int main(void)
{
int f(int a); //声明f函数,函数名代表函数的起始地址
int f1(int a,int b);
int (*p)(int); //定义一个指向返回值为整型且带有一个参数的函数的指针变量
int (*q)(int,int); //指向函数的指针变量在定义时就固定了只能指向什么样的函数,返回值类型和带有几个参数
int a = 10,b = 5;
int c;
p = f; //使指针变量指向f函数
c = (*p)(a); //通过指针变量运行f函数
printf("%d
",a);
//p = f1; //报错,因为P在定义的时候只带有一个参数
q = f1;
c = (*q)(a,b);
printf("%d
",c);
//以下时把指向函数的指针变量当作参数传递
//通过这种方法,传入不同的函数名就可以实现调用不同的函数
int fun(int (*x)(int,int),int,int); //声明一个函数,它的参数时指向函数的指针变量
int i;
i = fun(f1,a,b);
printf("%d
",i);
return 0;
}
int f(int a)
{
return a;
}
int f1(int a,int b)
{
int sum = a + b;
return sum;
}
int fun(int (*x)(int,int),int a,int b)
{
int i;
i = (*x)(a,b);
return i;
}