分类: C/C++
2013-06-05 13:18:24
函数指针,顾名思义就是一个指向函数的指针。我们先看一个例子:
#include
void fun(int a,int *p)
{
a=10;
*p=10;
}
int main()
{
int a;
int n;
void (*p_fun)(int a,int *p);
p_fun=&fun;
a=5;
n=5;
(*p_fun)(a,&n);
printf("After fun: a=%d n=%d\n",a,n);
return 0;
}
我们不用管程序干嘛,我们只要看蓝色的三行。
首先void (*p_fun)(int a,int *p);这一行定义了函数指针,这个指针的地址就是函数的入口。
p_fun=&fun;这一行我们给函数指针一个明确的地址,这样程序就知道从哪里开始运行这个函数。
(*p_fun)(a,&n);这一行是函数指针的使用,程序通过这一行就从函数指针指向的地址进行调用函数。
这样我们就完成了函数指针的完整使用。
通过这个例子,我们可以这样理解函数指针,这是一个指针,只是这个指针指向的地址是一个函数的入口。而函数指针的使用也是和普通变量指针的用法一样,首先定义一个指针void (*p_fun)(int a,int *p);,接着给指针初始化p_fun=&fun;,然后我们才能使用它(*p_fun)(a,&n);。这样我们就可以很好地理解函数指针了。