易码技术论坛

 找回密码
 加入易码
搜索
查看: 251720|回复: 2

[教程]函数指针-

[复制链接]
发表于 2006-11-10 22:06:04 | 显示全部楼层
木有教程的样子...
 楼主| 发表于 2006-11-10 22:13:22 | 显示全部楼层
函数指针的使用。。以map函数为例子。。
其中,map的参数 函数fun 作用在数组上的每个数值上。。
  1. #include <stdio.h>
  2. typedef int FUN(int);
  3. int add2(int x){
  4.   return x+2;
  5. }
  6. int print(int x){
  7.   printf("%d,",x);
  8.   return x;
  9. }
  10. int* map(int* list,FUN fun,long length){
  11.   int i;
  12.   for(i=0;i<length;i++){
  13.   list[i]=fun(list[i]);
  14.   }
  15.   return list;
  16. }
  17. void main(){
  18. int list[]={33,44,0,8,3,2};
  19. printf("original list:\n");map(list,print,6);
  20. map(list,add2,6);
  21. printf("\n\nafter every item add 2:\n");
  22. map(list,print,6);
  23. }
复制代码
 楼主| 发表于 2006-11-10 21:28:34 | 显示全部楼层 |阅读模式
  看例子。。
  1. #include <stdio.h>
  2. typedef int FUN(int,int);      //定义函数指针的类型。。
  3. int apply(FUN fun,int x,int y){
  4.   return fun(x,y);
  5. }
  6. int add(int x,int y){
  7.   return x+y;
  8. }
  9. int sub(int x,int y){
  10.   return x-y;
  11. }
  12. void main(){
  13.             printf("%d\n",apply(add,1,1));
  14.   printf("%d\n",apply(sub,1,1));
  15.   getchar();
  16. }
复制代码
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-28 14:32 , Processed in 0.012211 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表