递归中的引用传递和常引用传递
通过递归加深引用传递和常引用传递的区别,同时加深递归回溯的过程
void process(string& str) {if (str.size() >= 5) {cout << str << ",return" << endl;return;}cout << str<<endl;str += '1';process(str);cout << str << endl;
}
int main() {string str = "";process(str);cout << "final,"<< str << endl;while (1);return 0;
}
1
11
111
1111
11111,return
11111
11111
11111
11111
11111
final,11111
该函数在递归中每一次都修改str的值,注意传递的是引用传递,所以每一次对str的修改都会改变str中真实的值,所以在递归调用回溯过程中输出str最后都是11111;
void process(const string& str) {if (str.size() >= 5) {cout << str << ",return" << endl;return;}cout << str<<endl;process(str+'1');cout << str << endl;
}
int main() {string str = "";process(str);cout << "final,"<< str << endl;while (1);return 0;
}
1
11
111
1111
11111,return
1111
111
11
1final,
传递的是引用常量参数,所以在不会修改原str的值,并且在回缩过程中每个临时变量的str都不一样。
递归中的引用传递和常引用传递相关推荐
- c++引用专题之常引用
引用专题之常引用 常引用 使用变量初始化const引用 案例1 案例2 使用字面量常量初始化const引用 综合案例 const引用结论 综合练习 常引用 下面开始进入const引用难点 使用变量初始 ...
- 【C++要笑着学】引用的概念 | 引用的应用 | 引用的探讨 | 常引用
- C++左值和右值,左值引用和右值引用
左值和右值 C++ 中对于左值和右值没有一个标准的定义,通常来说: 可以取得到地址的,有变量名称的,非临时的量就是左值,从硬件结构上看,存储在内存中的量就是左值: 无法取得到地址的,没有变量名称的,临 ...
- C++中在什么时候需要使用“常引用”?
如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用. 常引用声明方式:const 类型标识符 &引用名=目标变量名: 例1 int a ;const in ...
- C++中的常对象与常引用
目录 一.常对象 二.用const修饰的类对象 1.常成员函数 声明 注意 三.常引用 1.声明 2.应该在何时使用: 1.在函数中无需改变其值的参数,应该使用常引用. 2.复制构造函数的参数一般也宜 ...
- python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递
python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...
- C++中的常引用、常对象、常函数、常数据成员
1.常引用 用const声明的引用就是常引用.常引用所引用的对象不能被更改.经常见到的是常引用作为函数的形参,这样不会发生对实参的误修改.常引用的声明形式为:const 类型说明符 &引用名. ...
- Java中ListE对象赋值问题(引用传递和值传递)
Java中List<E>对象赋值操作问题 业务需求是:取2个集合中的交集对象并返回.如下代码,busMap中key值和stocks中Map中的key值相等的对象则返回继续操作,也就是说剔除 ...
- python引用传递产生的问题_理解Python中传递值和引用时出现问题
我可以看到三个基本的Python概念,它们可以为这个问题提供一些启示: 1)首先,来自可变对象的赋值,如self.foo = arg1 就像复制指针(而不是所指向的值):self.foo和{}是相同的 ...
最新文章
- 浅谈分布式消息技术 Kafka--大数据技术栈05
- Python中基础数据类型(List、Tuple、Dict)的概念和用法
- java 字母随机数_java如何生成指定长度的随机数字和英文的字符串
- 学习笔记之51单片机键盘篇(非编码键盘与编码键盘、非编码键盘的扫描方式、独立键盘、矩阵键盘)
- 如何注册和删除系统服务文件
- 安装配置管理 之 JRE 安装和配置,以适合JAVA程序运行所具备的环境
- 2 测试方法与理论 - 软件测试
- JavaSE,JavaEE,JavaME区别
- OSAL工作机制分析
- 可以直接复制的emoji符号(表情)
- sql server 2005 32位+64位、企业版+标准版、CD+DVD 下载地址大全【申明:来源于网络】
- java自动机字符串匹配_字符串匹配之有限自动机
- 通过路由器端口映射实现外网IP访问内网服务器
- 牛顿迭代法 解 二元高次方程组 Mathematica
- word中生成带方块的对勾
- 支付宝门店码,全面助力商家快速实现数字化经营
- Linux下修改环境变量
- uni-app 获取移动设备的MAC地址
- 原码、反码、补码和真值
- 双摄像头测距的OpenCV实现