【C++】reference parameter-引用参数
1.reference parameter
以下两个函数等效,只调用方式不同:
1>
1 int reset(int i){
2 i = 13;
3 return i;
4 }
5
6 int main ()
7 {
8 int j=0;
9 j = reset(j);
10 cout<<j<<endl;
11 system("PAUSE");
12
13 return 0;
14 }
2>
1 void reset(int &i){
2 i = 13;
3 }
4
5 int main ()
6 {
7 int j;
8 reset(j);
9 cout<<j<<endl;
10 system("PAUSE");
11
12 return 0;
13 }
函数区别,第一个必须要有返回值,第二个则不必.
调用时区别在第9行.
void reset()函数中引用参数 i 只是变量 j 的另一个名称,本质上就是变量 j ,不需要返回值,更改 i 的内容即等效于更改 j 的内容.
2.借引用参数实现一个函数返回多个结果
众所周知,一个函数只能有一个返回值。
但是借由reference parameter,可以实现返回多个结果的效果。
//找出字符第一次出现位置pos,并得出共出现的次数occurs
#include <iostream>
using namespace std;
string::size_type find_char(const string &s, char c, string::size_type &occurs){
auto ret = s.size();
occurs = ;
for(decltype(ret) i = ; i<s.size(); ++i){
if(s[i]==c){
if(ret == s.size()){
ret = i;
}
++occurs;
}
}
return ret;
}
int main ()
{
string s = "casutxodoihsdfd";
string::size_type occurs= ;
cout<<find_char(s,'d',pos)<<endl;
cout<<occurs<<endl;
system("PAUSE");
return ;
}
输出
其中occurs就是作为被引用参数,在调用函数时其值被更改。
【C++】reference parameter-引用参数的更多相关文章
- [SoapUI] Reference parameter 引用变量
Reference parameter in WADL : Endpoint : ${#Project#DomainServer} Resource : {AdvisorID} Reference p ...
- 常量函数、常量引用参数、常量引用返回值[C++]
1. 关于常量引用正像在C语言中使用指针一样,C++中通常使用引用 有一个函数... foo()并且这个函数返回一个引用...... & foo()...., 一个指向位图(Bitmap)的引 ...
- 非const引用参数传入不同类型编译不过的理解(拒绝将临时对象绑定为非const的引用的形参是有道理的)
int f (int & I) { cout<<I<<std::endl; } void main() { long L; f(L); // 编译不过 f((int)L ...
- C#的值参数与引用参数
值参数:在使用值参数时,是把变量的值传给函数,函数中对此变量的任何修改都不影响该变量本身的值. 引用参数:使用引用参数时,在函数中对此变量的修改会影响变量的值. 说简单点,值参数,就是我把身份证复印件 ...
- 实例对比剖析c#引用参数的用法
c#引用参数传递的深入剖析值类型的变量存储数据,而引用类型的变量存储对实际数据的引用.(这一点很重要,明白了之后就能区分开值类型和引用类型的差别) 在参数传递时,值类型是以值的形式传递的(传递的是值, ...
- C#方法的六种参数,值参数、引用参数、输出参数、参数数组、命名参数、可选参数
方法的参数有六种,分别是值参数.引用参数.输出参数.参数数组.命名参数.可选参数. 值参数 值参数是方法的默认类型,通过复制实参的值到形参的方式把数据传递到方法,方法被调用时,系统作两步操作: 在栈中 ...
- C#_delegate - 值参数和引用参数
值参数不能加,引用参数可以. 引用参数是共享的 using System; using System.Collections.Generic; using System.Linq; using Sys ...
- SQL Server,Access数据库查询易混点和C#中parameter指定参数长度的优缺点
在学校的时候就经常做一些网站,所以这次在公司实习,组长第一次给了一个企业的网站还是很快的完成了.中间并没有遇到什么大的问题,但是还是遇到了两个新手非常容易混淆的小问题,所以拿出来跟大家分享一下. 主要 ...
- C# 引用参数
最近经常和同事讨论引用参数的问题,为了搞清楚,查了些资料,其中CLR via C#中讲的比较清楚,整理了下 ----摘自(CLR via C#) 在默认情况下,CLR假设所有的方法参数都是按值传递的. ...
随机推荐
- 【php】 php获取文件路径中的文件名和文件后缀方法
获取文件名 $file = realpath(__DIR__.'/images/common/../addBtn.png'); 方法一 $file = realpath(__DIR__.'/image ...
- Anaconda For Linux (附C#交互式编程的引入)
汇总系列:https://www.cnblogs.com/dunitian/p/4822808.html#ai Jupyter美化: https://www.cnblogs.com/dotnetcra ...
- Spring 声明式事务
事务的特性/概念 事务:一组操作要么都成功要么失败: 事务的四个关键属性(ACID): 原子性(atomicity):“原子”的本意是“不可再分”,事务的原子性表现为一个事务中涉及到的多个操作在逻辑上 ...
- Building real-time dashboard applications with Apache Flink, Elasticsearch, and Kibana
https://www.elastic.co/cn/blog/building-real-time-dashboard-applications-with-apache-flink-elasticse ...
- 【POJ2182】Lost Cows 树状数组+二分
题中给出了第 i 头牛前面有多少比它矮,如果正着分析比较难找到规律.因此,采用倒着分析的方法(最后一头牛的rank可以直接得出),对于第 i 头牛来说,它的rank值为没有被占用的rank集合中的第A ...
- RGBColorspace 与 GRAYColorspace 图片混合后,生成的视频有点问题
最近有一个用户遇到一个情况: 有3张图片,其中前两张是 RGBColorspace,最后一张是 GrayColorspace: 生成的视频,在显示最后一张图片的时候,明显出现奇怪的色彩区域,看下图: ...
- python datetime 字符串 时间戳
#把datetime转成字符串 def datetime_toString(dt): return dt.strftime("%Y-%m-%d-%H") #把字符串转成dateti ...
- pytest 6 生成html报告
前言:pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告.兼容Python 2.7,3.6 1.github上源码地址[https://github.com/pytest-d ...
- Codeforces Round #529 (Div. 3) F.Make It Connected
传送门 题意: 有 n 个顶点,每个顶点有个花费 a[ i ],连接顶点 u,v 需要花费 a[v]+a[u]的代价. 有 m 个特殊边,每条边有三个参数 u,v,w 代表的意思是连接 u,v 的花费 ...
- RPC简介
一:为什么会出现RPC呢? 当公司业务量还是很小的时候,所有的程序都放置在一台机器上,程序之间通过函数或者类来调用.1:当公司的业务发展越来越大,业务线越来越多,公司后端人员也越来越多,分布在不同的业 ...