Chinaunix首页 | 论坛 | 博客
  • 博客访问: 211515
  • 博文数量: 59
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 424
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-25 12:57
文章分类

全部博文(59)

文章存档

2016年(23)

2015年(30)

2014年(6)

我的朋友

分类: C/C++

2015-12-10 11:35:05

函数在内存中存储的,因此,函数也有一个起始地址,实际上,函数名就是函数的起始地址。

函数指针的形式:返回值(*指针变量名)(形参1,形参2)

获取了该函数指针,相当于我们获取了函数,因此,可以通过这个指针来方便的操作函数。

例子如下:


  1. //  
  2. //  main.c  
  3. //  Point  
  4. //  
  5. //  Created by Kenshin Cui on 14-6-28.  
  6. //  Copyright (c) 2014年 Kenshin Cui. All rights reserved.  
  7. //  
  8.   
  9. #include   
  10.   
  11. int sum(int a,int b){  
  12.     return a+b;  
  13. }  
  14.   
  15. int sub(int a,int b){  
  16.     return a-b;  
  17. }  
  18.   
  19. //函数指针作为参数进行传递  
  20. int operate(int a,int b,int (*p)(int,int)){  
  21.     return p(a,b);  
  22. }  
  23.   
  24. int main(int argc, const char * argv[]) {  
  25.     int a=1,b=2;  
  26.     int (*p)(int ,int)=sum;//函数名就是函数首地址,等价于:int (*p)(int,int);p=sum;  
  27.     int c=p(a,b);  
  28.     printf("a+b=%d\n",c); //结果:a+b=3  
  29.       
  30.       
  31.     //函数作为参数传递  
  32.     printf("%d\n",operate(a, b, sum)); //结果:3  
  33.     printf("%d\n",operate(a, b, sub)); //结果:-1  
  34.       
  35.     return 0;  
  36. }  


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