C++ 指针函数和函数指针

1、指针函数

(1)基本概念

指针函数:顾名思义就是带有指针的函数,即其本质是一个函数,只不过这种函数返回的是一个对应类型的地址。

(2)定义式

type  *func(type , type)

如:int *max(int x, int y)

(3)例子详解

[cpp] view plain copy

1.   #include <iostream>  

2.   using namespace std;  

3.     

4.     

5.   int *GetNum(int x); //指针函数声明形式  

6.     

7.     

8.   void main(void)  

9.   {  

10.     cout<<"===============start================"<<endl;  

11.     int num;  

12.     cout<<"Please enter the number between 0 and 6: ";  

13.     cin>>num;  

14.     cout<<"result is:"<<*GetNum(num)<<endl;    //输出返回地址块中的值  

15. }  

16.   

17. int *GetNum(int x) {  

18.     static int num[]={0,1,2,3,4,5,6};  

19.     return &num[x];  //返回一个地址  

20. }  

总结:从上面的小例子我们可以看出子函数返回的是数组中某一元素所在的地址值,输出的是这一地址中存储的数。

2、函数指针

(1)基本概念

函数指针:指向函数的指针变量,本质上是一个指针变量

(2)定义式

type (*func)(type ,type )

如:int (*max)(int  a, int  b)

(3)例子详解

[cpp] view plain copy

1.   #include <iostream>  

2.   using namespace std;  

3.     

4.   int max(int a, int b) {  

5.       return a>b?a:b;  

6.   }  

7.     

8.   void main(void)  

9.   {  

10.     cout<<"===========start==========="<<endl;  

11.     int (*func)(int,int);       //定义一个指向该函数形式的指针变量  

12.     func=max;  

13.     int a,b;  

14.     cout<<"Please enter two numbers:";  

15.     cin>>a>>b;  

16.     int result=(*func)(a,b);    //运用指针变量调用函数  

17.     cout<<"max="<<result<<endl;  

18. }  

总结:两者主要区别,一个是函数(指针函数),一个是指针变量(函数指针)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

B树

B树是为磁盘或其他直接存储的辅存设备而设计的一种平衡搜索树。 B树类似于红黑树&#xff0c;但在降低磁盘I/O操作数方面要更好一些。许多数据库系统使用B树或者B树的变种来存储信息。 B树与红黑树的不同之处在于B树的结点可以有很多孩子&#xff0c;从数个到数千个。也就是说&…

如何使用recaptcha_在Spring MVC Web应用程序中使用reCaptcha

如何使用recaptchaCAPTCHA是一个程序&#xff0c;可以生成人类可以通过但计算机程序“ 不能 ”通过的测试并对其进行评分。 所采取的策略之一是向用户显示具有扭曲文本的图像&#xff0c;并且用户应在输入区域中书写文本。 如果显示的文字与用户输入的文字相同&#xff0c;则我…

micropython esp8266教程_(一)ESP8266/nodemcu如何使用MicroPython进行开发

简介 大家都知道ESP8266&#xff08;nodemcu&#xff09;可以使用arduino的语法&#xff08;C&#xff09;进行开发&#xff0c;也有些小伙伴可能也知道可以使用lua语言进行开发的。但是现在我们也可以使用python来开发esp8266&#xff08;nodemcu&#xff09;了。那么这篇教程…

PostGIS之路——几何对象编辑(二)

1、ST_Reverse返回几何对象顶点顺序相反的几何对象。geometry ST_Reverse(geometry g1);示例SQL&#xff1a;SELECT ST_AsText(the_geom) as line, ST_AsText(ST_Reverse(the_geom)) As reverselineFROM(SELECT ST_MakeLine(ST_MakePoint(1,2),ST_MakePoint(1,10)) As the_geom…

C++ cin.sync()和cin.ignore()

cin.sync()的功能是清空缓冲区&#xff0c;而cin.ignore()虽然也是删除缓冲区中数据的作用&#xff0c;但其对缓冲区中的删除数据控制的较精确。 有时候你只想取缓冲区的一部分&#xff0c;而舍弃另一部分&#xff0c;这是就可以使用cin.ignore()&#xff0c;其使用方法是&…

Spring Data对Cassandra 3的支持

名为Ingalls的新Spring Data发布火车的发布引起了我的关注&#xff0c;其中之一是Spring Data Cassandra最终支持Cassandra 3。 因此&#xff0c;我回顾了我的一个旧样本&#xff0c;并尝试了较新版本的Cassandra。 安装Cassandra 第一步是安装本地版本的Cassandra&#xff0c…

第12秒做视频封面:阿里云视频截帧功能

代码&#xff1a; <video src"http://ruilai-course.imreliable.net/fangcao_course/{{results.VideoName}}.mp4"poster"http://ruilai-course.imreliable.net/fangcao_course/{{results.VideoName}}.mp4?x-oss-processvideo/snapshot,t_12000,f_jpg,w_750,…

winform什么时候会调用closed事件_async/await 给程序带来了什么?

如果说async给ASP.NET带来的是处理能力的提高&#xff0c;那么在WinForm中给程序员带来的好处则是最大的。我们再也不用因为要实现异步写回调或者绑定事件了&#xff0c;省事了&#xff0c;可读性也提高了。不信你看下面我们将调用我们那个web service的代码在.NET4.5下实现一下…

Vtk出现Generic Warning时

Generic Warning: In D:\ProgramFiles\VTK\VTK-7.0.0\Rendering\Core\vtkPolyDataMapper.cxx, line 28 Error: no override found for ‘vtkPolyDataMapper’. Warning: In D:\ProgramFiles\VTK\VTK-7.0.0\Rendering\Core\vtkInteractorStyleSwitchBase.cxx, line 43 vtkInte…

Properties 持久的属性集

特点&#xff1a;1、Hashtable的子类&#xff0c;map集合中的方法都可以用。2、该集合没有泛型。键值都是字符串。3、它是一个可以持久化的属性集。键值可以存储到集合中&#xff0c;也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。 // 根据ke…

MySQL的简单使用

一&#xff0c;MySQL的使用 (1)启动MySQL服务&#xff08;DOS下输入&#xff09;net start mysql / 停止服务net stop mysql&#xff0c;其中mysql是你的数据库服务器的名字。 (2)登录MySQL:mysql -h localhost -u root -p回车后输入你的数据库登录密码。 出现如上图的信息说…

错误C4996:'std :: _Copy_impl'

编译示例程序时出现 错误C4996&#xff1a;std :: _Copy_impl&#xff1a;使用可能不安全的参数的函数调用(error C4996: std::_Copy_impl:Function call with parameters that may be unsafe) 在于处理器中添加 _SCL_SECURE_NO_WARNINGS

python编程口诀_科学网—Python编程技巧汇总 - 高关胤的博文

正在学习python编程&#xff0c;把一些小技巧记录下来备查 计算技巧 正常的条件语句如下if a>b:caelse:cb 可以写为以下简洁的语句a100b200ca if a>b else bprint(c) 作图 python中可以使用numpy的array来高效处理数组 下面主要列举matplotlib的基本使用方法&#xff0c;…

jsf标签p:ajax_JSF AJAX请求的会话超时处理

jsf标签<p:ajax>JSF AJAX请求的会话超时处理 当我们使用AJAX行为开发JSF应用程序时&#xff0c;在处理Ajax请求的超时情况时&#xff0c;我们可能会遇到问题。 例如&#xff0c;如果您使用的是基于J2EE Form的身份验证&#xff0c;则会话超时后应将正常请求重定向到登录页…

使用javamail发信过程中的一些问题及解决方法

今天在研究javamail发信的过程中&#xff0c;出现了一些小问题&#xff0c;现总结如下&#xff0c;以免后来者走些不必要的弯路&#xff0c;先把完整的能够正常运行的代码示例粘贴如下&#xff1a; 发邮件源代码&#xff1a; package com.hyq.test; import java.util.Propertie…

VIsual Studio编译OpenCV:无法打开python27_d.lib(python36_d.lib)的问题

在用 VS2015 编译 Debug 版的 openCV 源码时&#xff0c;最后一步生成 INSTALL&#xff0c;碰到了下面问题&#xff1a;因为配置 Windows 版 caffe 的需要&#xff0c;我先安装了一个 Anaconda3&#xff08;3.6版本&#xff09;&#xff0c;caffe 最高支支持到 3.5 &#xff0c…

python做硬件自动化测试仪器_基于Python PyVisa和GPIB的硬件测试仪器控制方法

基于Python和GPIB的硬件测试仪器控制方法 背景 在物联网通信时代&#xff0c;嵌入式模块开发越发广泛&#xff0c;自动化测试成为大家老生常谈的话题。对于一些高精度仪器&#xff0c;我们知道它是用GPIB控制用来测试&#xff0c;也希望可以通过一个程序实现自动化控制&#xf…

外点惩处函数法·约束优化问题

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主同意不得转载&#xff0c;博客主页 http://blog.csdn.net/i_love_home https://blog.csdn.net/zstu_wangrui/article/details/36242529 外点惩处函数法约束优化问题 外点法惩处函数&#xff08;r添加&#xff0c;SU…

在单元测试和TDD中指定时间的重要性

最近&#xff0c;我一直在写与自动测试有关的更高级的概念&#xff08;主要与Spock有关&#xff09;。 但是&#xff0c;在进行测试培训时&#xff0c;我清楚地看到&#xff0c;通常对特定工具的知识并不是主要问题。 即使使用Spock&#xff0c;也可以编写肿且难以维护的测试&a…

40个Java多线程问题总结

前言 Java多线程分类中写了21篇多线程的文章&#xff0c;21篇文章的内容很多&#xff0c;个人认为&#xff0c;学习&#xff0c;内容越多、越杂的知识&#xff0c;越需要进行深刻的总结&#xff0c;这样才能记忆深刻&#xff0c;将知识变成自己的。这篇文章主要是对多线程的问题…