“函数指针”的本质是一个指针变量,只不过该指针变量指向函数。

1:简单应用

形式1:返回类型(*函数名)(参数表)

[html] view plaincopy
  1. #include <stdio.h>
  2. char* (*test)(char *);//定义一个函数指针,使用之前对其赋值
  3. char* fun(char *ch)//定义一个普通函数
  4. {
  5. return ch;
  6. }
  7. void main()
  8. {
  9. test = fun;//对函数指针赋值
  10. printf("%s\n",test("hello world"));
  11. }

2:结合typedef 应用函数指针

形式2:typedef 返回类型(*函数名)(参数表)

[html] view plaincopy
  1. #include <stdio.h>
  2. typedef char* (*TEST)(char *);//使用typedef定义一个函数指针类型
  3. TEST test;//定义函数指针
  4. char* fun(char *ch)//定义一个普通函数
  5. {
  6. return ch;
  7. }
  8. void main()
  9. {
  10. test = fun;//对函数指针赋值
  11. printf("%s\n",test("hello world"));
  12. }

typedef的功能是定义新的类型。

第一句就是定义了一种TEST类型的函数指针。该函数返回类型为char * ,参数类型为char * 。在下面的代码中可以像int,char一样使用TEST类型了。

第二句利用TEST类型定义来一个变量test。可以像平常一样使用了。

相比第一种方法,此方法较直观

3:结合typedef 应用函数指针数组

形式3:typedef 返回类型(*函数名[ ])(参数表)

[html] view plaincopy
  1. #include <stdio.h>
  2. char* fun1(char *ch)//定义一个普通函数
  3. {
  4. return ch;
  5. }
  6. char* fun2(char *ch)//定义一个普通函数
  7. {
  8. return ch;
  9. }
  10. void main()
  11. {
  12. typedef char* (*TEST[2])(char *);//使用typedef定义一个函数指针类型
  13. TEST test = {fun1,fun2};
  14. printf("1:%s\n 2:%s \n",test[0]("call fun1"),test[0]("call fun2") );
  15. }

相比第一种方法,此方法更为直观

结合typedef更为直观的应用函数指针相关推荐

  1. 使用typedef声明新类型及函数指针

    一.使用typedef声明新类型名 C语言支持一种叫做typedef的机制,它允许你为各种数据类型定义新名字.typedef声明的写法和普通的声明基本相同,只是吧typedef这个关键字出现在声明的前 ...

  2. 恼人的函数指针(二)

    原文链接:http://www.cnblogs.com/AnnieKim/archive/2011/12/04/2275589.html 前面曾写过一篇恼人的函数指针(一).总结了普通函数指针的声明. ...

  3. 函数指针数组在ARM异常中断处理中的应用

    介绍一种简洁.高效.灵活的ARM异常中断处理方法.       在ARM中,由于所有的中断都使用同一个异常中断入口地址,即0x00000018.因此需要在异常中断处理程序中根据相应的中断号调用对应的中 ...

  4. 【转】回调函数,函数指针与函数对象

    原文出处:http://shudingbo.spaces.live.com/blog/cns!C33400475B08F157!423.entry?wa=wsignin1.0&sa=24651 ...

  5. C++函数指针使用总结

    一 函数指针介绍 函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关.举例如下: int add(int nLeft,int nRight);//函数定义 该函数类型为int ...

  6. 虚函数指针sizeof不为sizeof(void*)

    ref:http://bbs.csdn.net/topics/360249561 一个继承了两个虚基类又增加了自己的一个虚函数pif的类,sizeof(指向pif的指针)竟然是8(X86). 我是从这 ...

  7. C/C++中函数指针的含义(转)

                                 C/C++中函数指针的含义 函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢?如果我们有一个int test(int a ...

  8. c/c++函数指针(3)

    原文地址:http://blog.csdn.net/qingshuiyangfan/article/details/7692647 学习要点: 1,函数地址的一般定义和typedef简化定义;    ...

  9. 【日常记录】函数指针与回调函数

    一.函数指针及其定义和用法  1.什么是函数指针? 2.如何用函数指针调用函数 二.回调函数(callback) 1. 什么是回调函数? 2. 为什么要使用回调函数? 3.怎么使用回调函数? 4. 怎 ...

最新文章

  1. 35岁改行做程序员,需要勇气和决心
  2. 安装SQL SERVER 2000时提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作。...
  3. POJ 1655 Balancing Act (树的重心)
  4. 新版本springboot整合@transactional注解
  5. 肺功能曲线图怎么看_如何看肺功能结果报告单
  6. 批量杀死MySQL连接的几种方法
  7. centos 文件夹网络连接_CentOS的网络配置的命令详解
  8. 关于指针初始化的问题 - 回复下雨天2
  9. USB和串口的区别是什么?
  10. ip 域名 端口了解
  11. 台式计算机怎么安装无线网卡,台式机无线网卡怎么用 台式机USB无线网卡安装使用教程...
  12. 【鸿蒙开发和安卓开发】如何实现后台弹出界面和开机自启动
  13. java 微信分享朋友圈 链接显示图片_【微信开发】-- 微信分享功能(分享到朋友和朋友圈显示图片和简介)...
  14. 织梦后台发布文章编辑器不显示的解决办法
  15. 详解APK静态分析引擎`quark-engine`的5大功能
  16. 10% building 2/5 modules 3 active ...lib\index.js!/路径报错
  17. 有效逻辑地址所对应的物理地址
  18. windows7 图形界面远程 centos6.5
  19. linux 火焰检测,033_linux操作系统火焰图探测系统性能
  20. 微博轻量级RPC框架Motan

热门文章

  1. posix_kill 信号
  2. JSONAssert Spring Boot Test
  3. RHCE实验:Linux下基于xinetd的访问控制
  4. 按失真类型分类整理TID2008
  5. 通用Logging框架设计
  6. Thinkphp5+PHPExcel实现批量上传表格数据
  7. CMake编译Makefile
  8. MySQL的SQL Profiler性能分析器
  9. 设计模式之美:Facade(外观)
  10. Android layout 优化:使用include和merge 标签