转载于:http://blog.csdn.net/vlily/article/details/7244682

一、 定义某一函数的指针类型:
就像自定义数据类型一样,我们也可以先定义一个函数指针类型,然后再用这个类型来申明函数指针变量。
我先给你一个自定义数据类型的例子。
typedef int* PINT;    //为int* 类型定义了一个PINT的别名
int main()
{
  int x;
  PINT px=&x;   //与int * px=&x;是等价的。PINT类型其实就是int * 类型
  *px=10;       //px就是int*类型的变量  
  return 0;
}
根据注释,应该不难看懂吧!(虽然你可能很少这样定义使用,但以后学习Win32编程时会经常见到的。)
下面我们来看一下函数指针类型的定义及使用:(请与上对照!)
//自行包含头文件
void MyFun(int x);    //此处的申明也可写成:void MyFun( int );
typedef void (*FunType)(int );   //这样只是定义一个函数指针类型
FunType FunP;              //然后用FunType类型来申明全局FunP变量

int main(int argc, char* argv[])
{
//FunType FunP;    //函数指针变量当然也是可以是局部的 ,那就请在这里申明了。 
   MyFun(10);     
   FunP=&MyFun;  
   (*FunP)(20);

return 0;
}

void MyFun(int x)  
{
   printf(“%d\n”,x);
}

看黑体部分:
首先,在void (*FunType)(int ); 前加了一个typedef 。这样只是定义一个名为FunType函数指针类型,而不是一个FunType变量。
然后,FunType FunP;  这句就如PINT px;一样地申明一个FunP变量。
其它相同。整个程序完成了相同的事。
这样做法的好处是:
有了FunType类型后,我们就可以同样地、很方便地用FunType类型来申明多个同类型的函数指针变量了。如下:
FunType FunP2;
FunType FunP3;
//……
 
二、 函数指针作为某个函数的参数
既然函数指针变量是一个变量,当然也可以作为某个函数的参数来使用的。所以,你还应知道函数指针是如何作为某个函数的参数来传递使用的。
给你一个实例:
要求:我要设计一个CallMyFun函数,这个函数可以通过参数中的函数指针值不同来分别调用MyFun1、MyFun2、MyFun3这三个函数(注:这三个函数的定义格式应相同)。
实现:代码如下:
//自行包含头文件 
void MyFun1(int x);  
void MyFun2(int x);  
void MyFun3(int x);  
typedef void (*FunType)(int ); //②. 定义一个函数指针类型FunType,与①函数类型一至
void CallMyFun(FunType fp,int x);

int main(int argc, char* argv[])
{
   CallMyFun(MyFun1,10);   //⑤. 通过CallMyFun函数分别调用三个不同的函数
   CallMyFun(MyFun2,20);   
   CallMyFun(MyFun3,30);   
}
void CallMyFun(FunType fp,int x) //③. 参数fp的类型是FunType。
{
  fp(x);//④. 通过fp的指针执行传递进来的函数,注意fp所指的函数是有一个参数的
}
void MyFun1(int x) // ①. 这是个有一个参数的函数,以下两个函数也相同
{
   printf(“函数MyFun1中输出:%d\n”,x);
}
void MyFun2(int x)  
{
   printf(“函数MyFun2中输出:%d\n”,x);
}
void MyFun3(int x)  
{
   printf(“函数MyFun3中输出:%d\n”,x);
}
输出结果:略
分析:(看我写的注释。你可按我注释的①②③④⑤顺序自行分析。)

函数指针作为某个函数的参数及定义函数指针相关推荐

  1. python中demo函数是什么意思_Python学习09:定义函数

    这次我们在上一次创建的com.second.function下创建Demo02.py 在Python中,定义一个函数要使用 def 语句,依次使用函数名.括号.括号中的参数和冒号 : ,然后在缩进块中 ...

  2. c/c++ typedef定义函数指针(Hook前奏2)

    文章目录 简介 为什么一定要使用 typedef 定义函数指针呢? 简介 关于函数指针的介绍,点击超链接即可查看,这里就不做过多说明了,或者可以点击这里: https://blog.csdn.net/ ...

  3. 使用 typedef 定义函数指针,更优雅的使用函数指针

    简介 关于函数指针的介绍,这里就不做过多说明了,不了解的同学可以看看这篇博客: https://blog.csdn.net/afei__/article/details/80549202 使用 typ ...

  4. python函数的用法详解(作用、定义、调用、函数参数、函数返回值、函数说明文档、函数嵌套使用)

    1. 函数的作⽤ 函数就是将⼀段具有独⽴功能的代码块整合到⼀个整体并命名,在需要的位置调⽤这个名称即可完成对应的需求. 函数在开发过程中,可以更⾼效的实现代码重⽤. 2. 函数的使⽤步骤 2.1 定义 ...

  5. python 函数参数_python之函数(二)——函数参数详解

    今天,我们要学习的是函数中的一个重要的概念--参数. 废话不多说,直接进入正题,下面我们看一段简单代码: def add(a, b): # 1 形参 sum = a + b return sum a ...

  6. python自定义函数参数_python自定义函数的参数之四种表现形式

    (1)def a(x,y):print x,y 这是最常见的定义方式,调用该函数,a(1,2)则x取1,y取2,形参与实参相对应,如果a(1)或者a(1,2,3)则会报错 (2)def a(x,y=3 ...

  7. 编写可变参数函数 c语言,C语言可变参数函数的编写

    1. 引言 C语言我们接触的第一个库函数是 printf("hello,world!");其参数个数为1个. 然后,我们会接触到诸如: printf("a=%d,b=%s ...

  8. db2自定义函数能返回几个参数_DB2 用户自定义函数

    用户自定义函数 DB2 内部提供了大量的函数,例如求某个字段最大值的 MAX() 函数,求某个日期所在年份的 YEAR() 函数,等等.如果在使用 DB2 的过程中,需要反复使用同一个功能,就可以把这 ...

  9. 站长在线Python精讲:在Python函数中理解形式参数和实际参数

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python函数中理解形式参数和实际参数>.本文的主要内容有:Python中形式参数的概念和特点,Python中实际参数的 ...

最新文章

  1. 怎么为DNS大哥减轻压力?
  2. C语言--指针函数和函数指针
  3. Android TextView 常用技巧
  4. 今年最火的 Golang 云原生开源项目,可能就是它了!
  5. CnCommon 的一些通用函数说明
  6. linux 下启动mysql
  7. 转码java,java转码
  8. angular中如何定义全局变量_如何在Angular 2 / Typescript中声明全局变量?
  9. flare3d_FLSL
  10. Java+SSM+Jsp+Mysql项目大学生健康管理系统
  11. 曼妙音色要靠煲 多媒体音箱煲机大法
  12. Halcon教程四:一个小技巧
  13. 华为一直响应服务器异常,服务器不断异常重启
  14. 广东最美的历史古村落,再不去就没了
  15. hecc in java_HECC是什么意思
  16. java 随机生成不重复的数字_java中生成不重复随机的数字
  17. 2022年9月电子学会Python等级考试试卷(一级)答案解析
  18. 帕德逼近matlab算法,帕德逼近matlab
  19. 如何在WORD中插入可播放的视频
  20. ebc是什么意思_ebc是什么意思?金蝶软件可靠吗?

热门文章

  1. 分类问题常用算法之支持向量机SVM
  2. 教育直播系统中不可或缺的功能部件:电子白板
  3. 彻底卸载VSCode
  4. 使用Metasploit生成攻击载荷——msfvenom免杀、upx加壳
  5. CPU流水线与指令乱序执行
  6. docker 服务编排
  7. Jenkins + 蒲公英 + 钉钉,构建Android APP自动上传获取对应下载二维码加钉钉群通知推送.
  8. IDEA升级后配置丢失解决
  9. Sentinel详解
  10. 有戏网赚网设计总结加愤青发泄下