C语言中函数指针的用法
函数具有赋值给指针的物理内存地址,一个函数的函数名就是一个指针,它指向函数的代码。一个函数的地址是该函数的进入点,也是调用函数的地址。函数的调用可以通过函数名,也可以通过指函数的指针来调用
1. 为什么要有函数指针
函数与数据项类似,函数也有地址。我们希望 在同一个函数中通过相同的形参在不同的时间产生不同的效果
2. 怎么获取函数的地址
获取函数地址的方式很简单,只要实用方法名(不用参数)即可。
例如:
函数:void function(int a) function 就是函数的地址
3.怎么声明一个函数指针
我们知道声明某种数据类型的指针时,必须指定指针指向的类型,所以我们声明指向函数的指针时,也必须指定指针指向的函数类型。意味着我们必须在声明中包含函数的返回类型和参数列表。
例如:
函数:double average(int a,int b);
函数指向声明
double (*pa) (int,int)
4.怎么使用指针来调用函数
//例如:
double pam(int x); //声明函数原型
double (*pa)(int); //声明指向上面函数的指针
pa = pam; //向指针赋值
double x = pa(10); //调用函数指针
5.一个函数指针的实例
/*
*
* 函数指针的高级用法
*
*/
#include <stdio.h>
void eatMeal(int num)
{
printf("我吃了%d片肉.",num);
}
void drinkWater(int num)
{
printf("我喝了%d杯水!",num);
}
//将函数指针作为参数 使用
void doSomething(void (*myp)(int),int num)
{
////使用函数指针调用函数
myp(num);
}
void main()
{
//定义一个函数的指针
void (*pa)(int);
pa=eatMeal;
pa(10);
//doSomething(pa,3);
pa=drinkWater;
pa(200);
//doSomething(pa,5);
}