浅析C++中的函数与指针
作者:goldensun 发布时间:2022-03-13 11:04:28
标签:C++,函数,指针
用函数指针变量调用函数
指针变量也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。
例 求a和b中的大者。
先按一般方法写程序:
#include <iostream>
using namespace std;
int main()
{
int max(int x,int y); //函数声明
int a,b,m;
cin>>a>>b;
m=max(a,b); //调用函数max,求出最大值,赋给m
cout<<"max="<<m<<endl;
return 0;
}
int max(int x,int y)
{
int z;
if(x>y) z=x;
else z=y;
return(z);
}
可以用一个指针变量指向max函数,然后通过该指针变量调用此函数。定义指向max函数的指针变量的方法是:
请将它和函数max的原型作比较:
int max(int, int); //max函数原型
可以看出: 只是用(*p)取代了max,其他都一样。现在将上面程序的主函数修改如下:
#include <iostream>
using namespace std;
int main( )
{
int max(int x,int y); //函数声明
int (*p)(int,int); //定义指向函数的指针变量p
int a,b,m;
p=max; //使p指向函数max
cin>>a>>b;
m=p(a,b);
cout<<″max=″<<m<<endl;
return 0;
}
请注意第7行的赋值语句“p=max;”。此语句千万不要漏写,它的作用是将函数max的入口地址赋给指针变量p。这时,p才指向函数max。
指向函数的指针变量的一般定义形式为:
函数类型 (*指针变量名)(函数形参表);
C++返回指针值的函数
一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据,即地址。其概念与以前类似,只是带回的值的类型是指针类型而已。返回指针值的函数简称为指针函数。
定义指针函数的一般形式为:
类型名 *函数名(参数表列);
例如:
int *a(int x, int y);


猜你喜欢
- 在Android开发中,定时器一般有以下3种实现方法:一、采用Handler与线程的sleep(long)方法二、采用Handler的pos
- springboot与spring区别一、spring 可以做什么之前已经学习了 spring 的 IOC容器、AOP、springMVC
- 前言之前有做个一个自定义报表的查询,这里使用的是一个动态的sql拼接,是前端选择了什么指标就查询什么信息!(这里的指标是多个表的字段,前端随
- 1 简介先来一张效果图TIM图片.gif上图中灰色的一块是ImageView控件,ImageView中的图片进行左右上下移动,以及双指缩放。
- 目录1、在运行时,由java解释器自动引入,而不用import语句引入的包是()。2、以下关于集合类ArrayList、LinkedList
- 前言制作无边框窗口时,系统自带阴影会消失,这时就需要我自己给窗口添加阴影以防止窗口融入背景。添加阴影的方法很简单,直接用effect就可以了
- 前言本文详细介绍如何使用spring-boot2.x快速整合log4j2日志框架。spring-boot2.x使用logback作为默认日志
- 前面文章已经详细介绍了Android界面的入门技术,相信大家在看完和跟着练习之后,会对于常用的Layout和View都会有一定的了解了,接下
- 注意:导包的时候API 11之前: android.text.ClipboardManagerAPI 11之后: android.conte
- 前言最近开发了一个接口,完成后准备自测时,却被 * 拦截了,提示:(AUTH-NO)未能获得有效的请求参数!怎么会这样呢?于是我全局搜了这个
- 1.memchrmemchr的函数声明:void *memchr(const void *str, int c, size_t n);作用:
- dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源工具。可以在这个地址ht
- 一、静态代理模式1.1、 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标
- class MyThreadScopeData { // 单例 &nbs
- 本文介绍了android视频截屏&手机录屏实现代码,分享给大家,希望对大家有帮助问题在android中有时候我们需要对屏幕进行截屏操
- 最近碰到这个问题,在使用spring提供的JpaTemplate进行查询时,如果数据量超过100 条,查询效率就会明显降低。由于开始时使用J
- Android 中View.onDraw(Canvas canvas)的使用方法View通过View.onDraw(Canvas canva
- Java以命令模式设计模式1、简单介绍意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决:在软件系统中,行为
- class文件中的attributes_count和attributesattributes_count位于class文件中methods的
- 本文实例讲述了Android编程实现Listview点击展开和隐藏的方法。分享给大家供大家参考,具体如下:代码较多,所以找关键点大家贴出来,