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

C++指向函数的指针用法详解

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

    本文导语:  本文以实例形式展示了C++指向函数的指针用法,是深入学习C++所必须掌握的关键知识点。分享给大家供大家参考之用。具体方法如下: 函数指针 现来看看以下声明语句,看看其含义: float (*h(int, void (*)(int)))(int); 以下是...

本文以实例形式展示了C++指向函数的指针用法,是深入学习C++所必须掌握的关键知识点。分享给大家供大家参考之用。具体方法如下:

函数指针

现来看看以下声明语句,看看其含义:

float (*h(int, void (*)(int)))(int); 

以下是一个变量指针的定义语句:

float* pf; 

以下是一个普通函数的声明语句:

float f(); 

请看以下声明语句:

float* g(); 

因为()的优先级高于*, 所以相当于:

float* (g()); 

g是一个函数, 返回值为float*, 参数为void

float (*h)(); 

中, h是个指针, 指向一个返回值为float的函数.
去掉h, 就是h的类型:

float (*)(); 

若要调用h所指的函数, 解引用这个指针即可:

(*h)(); 

它的缩写为(注意, 仅仅是缩写):h();
注意不能将(*h)两边的括号去掉, 去掉后,*h()等价于*(h()). ANSI C会把它认为是以下语句的缩写:

*((*h)()); 

上面的语句表示: 执行h所指向的函数, 然后解引用函数的返回值.
若h指向的函数有参数, 参数是指向函数的指针呢? 假设该参数的类型为: void (*)(int), 则h可以声明为:

float (*h)(void(*)(int)); 

已知有以下函数的声明:

float func(int); 

若要使h指向函数func, 只需要将(*h)替换func即可:

float (*h)(int); 

更进一步, h所指的函数不返回float, 而是返回指向函数的指针呢? 该指针的类型为float(*)(int).

float (*h(parameter))(int); 

其中parameter为h所指函数的参数, 假设参数类型有两个, 一个为int型, 一个类型为: void (*)(int), 则最终的结果为:

float (*h(int, void (*)(int)))(int); 

希望本文所述对大家的C++程序设计有所帮助。


    
 
 

您可能感兴趣的文章:

  • C++ MultiMaps 成员 begin():返回指向第一个元素的迭代器
  • C++中指向对象的常指针与指向常对象的指针详解
  • C++ Lists(链表) 成员 rbegin():返回指向第一个元素的逆向迭代器
  • C++中返回指向函数的指针示例
  • C++ Maps 成员 end():返回指向map末尾的迭代器
  • C++指向函数的指针实例解析
  • C++ MultiMaps 成员 end():返回一个指向multimap末尾的迭代器
  • C++中用指向数组的指针作函数参数
  • C++ Maps 成员 rend():返回一个指向map头部的逆向迭代器
  • java中有像C++中指向函数的指针这种东西吗?
  • C++ Maps 成员 rbegin():返回一个指向map尾部的逆向迭代器
  • C++中指向结构体变量的指针
  • C++ MultiMaps 成员 rbegin():返回一个指向mulitmap尾部的逆向迭代器
  • 深入解析C++中的指针数组与指向指针的指针
  • C++ MultiMaps 成员 rend():返回一个指向multimap头部的逆向迭代器
  • C++指向类成员函数的指针详细解析
  • C++ Lists(链表) 成员 rend():指向list末尾的逆向迭代器
  • C++ Maps 成员 begin():返回指向map头部的迭代器
  • C++ Double Ended Queues(双向队列) 成员 end():返回指向尾部的迭代器
  • C++ Strings(字符串) 成员 begin():返回一个迭代器,指向第一个字符
  • C++ Double Ended Queues(双向队列) 成员 rend():返回指向头部的逆向迭代器
  • 指向变量的常指针与指向常变量的指针详细解析
  • 指向类成员函数的指针其实并非指针
  • 系统函数返回的指针指向的内存释放的问题
  • minix filesystem v1.0 中current->root, current->pwd两个指针指向的值是在什么时候得到值的?
  • Linux提示提领指向不完全指针
  • 一个指针指向两个对象?
  • 菜鸟请教--关于指向结构体指针的赋值
  • 想建立一个指向结构体的指针数组,但编译不过,望高手指点!
  • 深入const int *p与int * const p的区别详解(常量指针与指向常量的指针)
  • 一个奇怪的问题(关于指向结构体的指针)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • CPU如何知道CS寄存器内装的是LDTR指向的描述符表的段选择符还是GDTR指向的描述符表的段选择符呢?
  • Linux下 域名指向问题 高手帮忙啊 在线等
  • ln命令如何改变链接的指向?
  • 如何设置iptables使得所有HTTP请求都指向登陆页面
  • 请教我怎样将jbuilder7的server指向我下载安装的jboss+Tomcat????急
  • 在jsp中如何实现页面的重新指向?
  • ISO是什么文件,在安装linux时候 要指向ISO文件我找不到!
  • 如何跟踪链接文件的真实指向?
  • 请问怎么查看ln指向哪里?
  • 自己新建了一个libm.so.2,用来指向已有的libm.so.1,但出错了
  • 指向數組的指針和多維數組的問題
  • 关于const char 如何指向不同的字符串
  • 我有两个域名,相指向一个ip,做虚拟主机,为什么不行啊~~~~~
  • 如何设置Tomcat实现多域名及IP指向同一JSP文件?
  • html页面如何指向web-inf/classes下的applet。是否使用codebase之类的说明,该如何书写。
  • 修改hosts文件使apache绑定域名指向本机
  • 可不可以这样认为!c语言是一道唯一指向操作系统的语言,精通了它,就了解了操作系统?
  • shell查找符号链接及其指向目标的方法介绍
  • pread疑惑:pread读完后,将指向后一个位置吗?
  • 关于多域名指向一个IP的问题


  • 站内导航:


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

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

    浙ICP备11055608号-3