函数指针是指向函数的指针变量,其指针指向函数内存的入口地址。
函数指针有两个用途:调用函数和做函数的参数。
函数指针的声明方法为:返回值类型 ( * 指针变量名) ([形参列表]);
例如:int fun(int x); //声明一个函数
int (*pf) (int x); // 声明一个函数指向指针 int为声明该函数指针为返回值时整形的函数指针
//pf是函数指针的指针名(注意括号) (int x) 为为形参列表
pf=fun //将函数入口地址赋值给函数指针
函数指针做参数传递:int fun_pointer( int(*pf) (int a, int b), int a ,int b )
调用方式:fun_pointer(pf,i, j)
/*
** 开发环境:vs2017
** 作 者:mirco_mcu
*/
#include "stdafx.h"
int (*pf) (int a, int b);//定义函数指针
int add(int a, int b) //定义函数
{
return a + b;
}
int fun_pointer( int(*pf) (int a, int b), int a ,int b ) //函数指针做参数,同时传入函数指针所调用的参数
{
return pf(a, b);
}
int main()
{
int i=1, j=2; //定义变量
pf = add; //将函数 add 入口地址赋值给函数指针
printf("常规计算 : %d\n", i + j); //常规调用
printf("函数指针 : %d\n", pf(i, j)); //函数指针方式调用
printf("函数指针做参数 : %d\n", fun_pointer(pf,i, j)); //函数指针方式调用
while (true);
return 0;
}