Chinaunix首页 | 论坛 | 博客
  • 博客访问: 163055
  • 博文数量: 25
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 319
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-12 21:27
文章分类

全部博文(25)

文章存档

2015年(2)

2014年(1)

2013年(22)

我的朋友

分类: 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);。这样我们就可以很好地理解函数指针了。


阅读(1038) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~