当前位置:  编程技术>c/c++/嵌入式

函数指针的一些概念详解

    来源: 互联网  发布时间:2014-10-20

    本文导语:  函数指针 最近看android camera 的source ,发现大量的call back ,多线程,有必要对其中的基础 :函数指针复习一下,觉得函数指针主要还是用在call back 函数,以及多线程多进程编程中。函数在被编译器编译后就是一段二进制码,...

函数指针

最近看android camera 的source ,发现大量的call back ,多线程,有必要对其中的基础 :函数指针复习一下,觉得函数指针主要还是用在call back 函数,以及多线程多进程编程中。函数在被编译器编译后就是一段二进制码,而这段二进制码有一个入口地址,而这个入口地址就是函数指针的值了。

首先看函数指针的语法,举一个最简单的例子,要创建一个函数指针,则它与它指向的函数,在参数个数类型以及返回值上都保持一致,跟重载的要求应该是一样的。

Int a(int a ) {return a ; }
Int (* b)(int n) ; // 函数指针
b = a ; // 对函数指针进行赋值
// 也可以使用b = &a ; 可以打印a 和&a 的值,实际是相同的
// 也可以直接使用int (*b)(int b) = a ;
b(1) ; // 效果同a(1)
// 也可以使用(*b)(1) ,上面的方式是标准c++ 的,注释中是为了兼容c ,可以打印b 和*b 的值,实际是相同的。

另外和函数指针经常一起出现的就是typedef ,因为函数指针的括号实在太多,尤其涉及到类的成员的函数的时候,因此为了方便一般配合typedef 使用:
typedef int (*b)(int n) ;
b b1 ;
b1 = a ; // 相当于int (*b1)(int n) = a ;

在call back 中典型的就是将需要call back 的函数指针传入,然后又调用函数根据函数指针call back 需要回调的函数:
int func(b callback , int num)
{
return callback(num) * num ;
}

另外除了平常单个函数指针外,还可以有函数指针数组:
b array[10] = {a1,a2,a3……} // 实际为int (*b[10])(int n) ; [] 比*优先级高
array[0](1) ;


    
 
 

您可能感兴趣的文章:

  • 深入解析函数指针与返回函数的指针
  • 指向类成员函数的指针其实并非指针
  • 请问如何根据函数指针打印出这个函数的名称?
  • c++函数指针和回调函数示例
  • 利用函数指针的好处是什么?
  • JAVA中函数调用时,能不能向 C/C++一样函数的入口参数可以为传出值(就是引用,或指针)
  • C:函数指针
  • 一般函数指针和类的成员函数指针深入解析
  • 一个线程函数如何取得GTK界面的所有控件指针?
  • 系统函数返回的指针指向的内存释放的问题
  • sp->callback或snmp_callback函数指针在哪里赋值?
  • 函数指针的强制类型转换实现代码
  • 函数指针的问题
  • 有些系统函数返回一个数据指针,实际的内存占用空间应该在那里??
  • C#委托所蕴含的函数指针概念详细解析
  • C++中返回指向函数的指针示例
  • 请问return语句会执行哪些操作?在函数中return一个已分配内存的指针,该指针所占用的内存会释放吗?
  • C++普通函数指针与成员函数指针实例解析
  • 关于linux下多线程运行由同一函数指针传入不同函数体的问题
  • c/c++ 使用指针函数后的内存怎么处理?
  • linux c malloc函数定义及用法详解
  • 浅谈SQLServer的ISNULL函数与Mysql的IFNULL函数用法详解
  • c++断言assert()函数的头文件及其用法详解
  • 请问:setTimeout(p1,p2) 的函数详解,马上给分的。
  • malloc函数详解及用法举例
  • oracle中lpad函数的用法详解
  • fork函数详解?
  • 深入mysql YEAR() MONTH() DAYOFMONTH()日期函数的详解
  • 从汇编看c++的默认析构函数的使用详解
  • 基于C++字符串替换函数的使用详解
  • 基于C语言fflush()函数的使用详解
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个基本概念问题:静态函数只能调用静态方法,类的成员函数也是静态的吗?
  • 谁给我讲讲回调函数的概念???
  • 请问在java,jsp中有函数的概念吗?
  • JAVA中有没有拷贝构造函数这个概念?相同类型的对象间可以直接赋值吗?
  • 高分请教一个概念性问题关于接口与构造函数方法?
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • 如果知道一个函数的地址或函数名,如何得到函数所在的文件名?
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
  • C++ Strings(字符串) 成员 Constructors:构造函数,用于字符串初始化
  • 在内核的某个函数中,如何能知道是哪个用户空间的函数调用了它,以及这个用户空间函数所在的文件?
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • 在dos下访问内存的MK_FP函数在linux下对应什么函数?int86()函数呢?
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • mysql iis7站长之家
  • Linux c++虚函数(virtual function)简单用法示例代码
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • js的众多函数令小弟实在搞不清楚!哪有函数速查手册之类的软件或者书籍!谢了!比如,setInterval、clearInterval这两个函数是干什么的?
  • cityhash 32位,64位和128位介绍及函数列表
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3