我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++的函数与指针

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++的函数与指针

函数与指针

一个函数在编译时被分配一个入口地址,这个入口地址就称为函数的指针。在C++中, 函数名代表函数的入口地址。

  • 指针作函数的参数-实现地址传递
  • 返回指针的函数
  • 利用指向函数的指针调用函数

指针作函数的参数-实现地址传递

指针作函数的参数,具有以下用途:

  • 指针作函数参数,这时形参接受的是实参的地址。函数中通过对指针的间接访问实现参数的按“引用传递”功能
  • 设置多个指针参数可从函数中带回多个结果值
  • 对于传递一块连续的内存区域数据,传递首地址比传递数

据值不仅开销小而且效率高

例如:

编写交换两个变量值的函数(地址传递)

相当于改变两个指针指向的变量内容。


void swap(int *px, *py)
{
	int t;
	t = *px;
	*px = *py;
	*py = t;
}
int main()
{
	int x=2, y=3;
	cout<<"调用前:x="<<x<<",y="<<y<<endl;
	swap(&x, &y);
	cout<<"调用后:x="<<x<<",y="<<y<<endl;
	return 0;
}

在这里插入图片描述

例如:

利用指针参数带回函数中的多个值

计算一维数组元素的平均值,并能带回数组中的最大值与最小值

函数原型设计如下:

double faver(int s[], int n, int *max, int *min);
其中:
s-一维数组
n-数组中元素个数
max-指向最大值
min-指向最小值
将平均值作为函数的返回值


double faver(int s[],int n,int *max,int *min)
{
	double aver=s[0];
	*max= *min =s[0];
	for(int i=1;i<n;i++)
	{ aver+=s[i];
	if(s[i]>*max)*max=s[i];
	if(s[i]<*min)*min=s[i];
	}
	return aver/n;
}
int main()
{
int a[5]={80,89,67,76,98}, max, min;
double aver;
aver=faver(a,5,&max,&min); //调用函数
cout<<"max="<<max<<"\n"<<"min="<<min<<endl;
cout<<"aver="<<aver<<endl;
return 0;
}

返回指针的函数

返回指针的函数定义格式如下


类型 * 函数名(形式参数表)
{
   语句序列
}

其中:

类型 * 为函数的返回值类型,是一个指针类型

例子

编写函数,返回字符串中首次出现的非空格字符开始的字符串

如:" using namespace std;" 返回"using namespace std;"


char * noblank(char * str)
{
	while(*str == ' ')
		str++;
	return str;
}
int main()
{
	char *s1 = "    using namespace std;", *s2;
	s2 = noblank(s1);
	cout << s2 << endl;
	return 0;
}

指向函数的指针变量

使用指向函数的指针变量可以存放函数的指针

指向函数的指针变量定义格式如下:


函数返回值类型 ( * 指针变量名 ) (形参类型表列);

注意,中间的括号不能省略

例如:

定义指向double型函数的指针变量,该函数有一个double型参数


double (*pf)( double );
pf=sqrt; //pf 指向一个平方根函数

时,使用*pf可以调用该函数。


cout<<(*pf)(2.0)<<endl; //输出根号2的值
与 cout<<sqrt(2.0)<<endl; 表示式是等价的

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++的函数与指针

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++ 内联函数与函数指针的区别

内联函数直接展开而不调用,而函数指针存储指向函数地址的变量,允许间接调用函数。C++ 内联函数和函数指针的区别什么是内联函数?内联函数是编译器在编译时直接展开的函数。这意味着内联函数的调用不会导致实际的函数调用,而是直接将函数代码插入到
C++ 内联函数与函数指针的区别
2024-04-16

C++ 函数指针作为函数指针参数

c++++ 中函数指针作为参数允许动态调用函数,语法是 typedef 返回类型 (*函数指针名)(参数列表);。函数指针可用作其他函数的参数,例如 apply_function(int_func_ptr func, int a, int
C++ 函数指针作为函数指针参数
2024-04-14

C语言如何使用数组指针与函数指针

这篇文章主要为大家展示了“C语言如何使用数组指针与函数指针”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言如何使用数组指针与函数指针”这篇文章吧。函数指针语法定义一个函数指针,并通过函数指针
2023-06-29

C++ 中函数指针与函数对象的异同?

函数指针和函数对象都是处理函数作为数据的机制。函数指针是指向函数的指针,而函数对象是包含重载的 operator() 的对象。两者都可以捕获变量并创建闭包。不同之处在于,函数指针是原始类型,而函数对象是类;函数指针必须指向有效函数,否则会产
C++ 中函数指针与函数对象的异同?
2024-04-12

c++函数名指针和函数指针怎么定义

本文小编为大家详细介绍“c++函数名指针和函数指针怎么定义”,内容详细,步骤清晰,细节处理妥当,希望这篇“c++函数名指针和函数指针怎么定义”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言我们先来看一下函数指针
2023-06-29

C++ 函数指针和函数对象

c++++ 函数指针和函数对象是处理函数的工具。函数指针存储函数地址,函数对象则允许重载操作符和维护状态。它们在排序算法、事件处理和策略模式中都有应用,可提高代码灵活性、重用性和可维护性。C++ 函数指针和函数对象前言函数指针和函数对象
C++ 函数指针和函数对象
2024-04-12

C++ 函数指针的优缺点

优点:代码重用和模块化动态绑定回调函数高阶函数缺点:难以阅读和维护安全问题性能开销C++ 函数指针的优缺点函数指针是 C++ 中一种强大的工具,它允许将函数作为参数传递,并在运行时解析。虽然它们提供了灵活性,但也有其自身的优点和缺点。优
C++ 函数指针的优缺点
2024-04-13

C语言中如何使用指针函数和函数指针

这篇文章给大家介绍C语言中如何使用指针函数和函数指针,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、指针函数当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。格式:
2023-06-17

C语言中怎么使用指针函数和函数指针

本篇内容介绍了“C语言中怎么使用指针函数和函数指针”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、指针函数当一个函数声明其返回值为一个指针
2023-06-16

C++ 函数的指针参数的用途

c++++ 함수의 포인터 매개 변수를 사용하면 함수 동작을 보다 유연하게 만들 수 있습니다. 포인터 매개 변수는 함수의 입력으로 사용되며 함수에 동적 변경성을 제공합니다. 포인터 매개 변수를 사용하면 함수에서 포인터
C++ 函数的指针参数的用途
2024-04-20

python(函数指针和类函数指针)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】    函数指针和类函数指针在c语言下面的概念都比较简单,用在脚本下面也很方便。因为脚本语言一切类型都是对象,所以根本不存在指针的概念。一
2023-01-31

C++ 函数中的 lambda 表达式与函数指针有何区别?

lambda 表达式和函数指针都是 c++++ 中封装代码的机制,但它们在实现和特性上有所不同:实现方式:函数指针指向函数的内存地址,而 lambda 表达式是内联的匿名代码块。返回类型:函数指针的返回类型固定,而 lambda 表达式的返
C++ 函数中的 lambda 表达式与函数指针有何区别?
2024-04-25

C++ 函数指针的应用场景

函数指针在 c++++ 中指的是指向函数内存地址的变量。它常用于回调函数、动态绑定和事件处理等场景。举例来说,在排序算法中,我们可以使用函数指针来实现不同的比较函数,从而灵活地选择排序算法。C++ 函数指针的应用场景什么是函数指针?在
C++ 函数指针的应用场景
2024-04-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录