C++开发入门到精通--在C++指针传递引用和Const关键字
小职 2021-08-06 来源 :Python之王 阅读 535 评论 0

摘要:本文主要介绍了C++开发入门到精通--在C++指针传递引用和Const关键字,通过具体的内容向大家展现,希望对大家C++开发的学习有所帮助。

本文主要介绍了C++开发入门到精通--在C++指针传递引用和Const关键字,通过具体的内容向大家展现,希望对大家C++开发的学习有所帮助。

C++开发入门到精通--在C++指针传递引用和Const关键字


以前,当我们将参数传递给函数时,我们一般使用普通变量,这称为pass-by-value方法。但是因为传递给函数的变量有可以出现超出了范围的问题,这样我们实际上无法修改参数的值。

 

引用传递

引用传递是指通过引用将参数传递给函数。调用时,该函数可以通过使用传入的引用来修改参数的值。

 

这使我们能够:

 

修改函数参数的值。

出于性能原因,避免复制变量/对象。

以下代码显示了传递引用的示例。调用函数时,引用参数用实际参数初始化:

 

 

#include <iostream>

 

using namespace std;

 

void swap(int &i,int &j){

  int temp = i;

  i = j;

  j = temp;

 }

 

 

int main(){

 int a = 100;

 int b = 200;

 swap(a,b);

 cout << a << endl;

 cout << b << endl;

 

}

请注意,int &i和int &j是函数的参数swap()。

 

当swap()被调用时,变量a和的值b将被修改,因为它们是通过引用传递的。输出将是:

 

200

100

下面有一个函数被调用triple(),有一个main()我们调用了triple()两次。大家认为这段代码会输出什么?

 

 

#include <iostream>

 

int triple(int i) {

  i = i * 3;

  return i;

}

 

int main() {

  int num = 1;

  std::cout << triple(num) << "\n";

  std::cout << triple(num) << "\n";

}

函数Triple()的参数是int i,所以它在这里是通过值传递的;传入的参数num不会被修改。

 

因此输出为

 

3

3

将参数从 更改int i为int &i。现在正在做引用传递而不是值传递。你认为这现在会输出什么?

 

 

#include <iostream>

 

int triple(int &i) {

  i = i * 3;

  return i;

}

 

int main() {

  int num = 1;

  std::cout << triple(num) << "\n";

  std::cout << triple(num) << "\n";

}

在第一次调用Triple()之后,num从1修改为3。因此,当第二次调用Triple()时,输出为9。

 

因此输出为

 

3

9

使用 Const 传递

const关键字告诉编译器,这样的变量不会改变的。

 

比如:double const pi = 3.14;。如果我们尝试更改pi,编译器将抛出错误。

 

有时,我们const在函数中使用参数;这是当我们知道我们想要编写一个函数,其中参数不会在函数内部更改的事实时。下面是一个例子:

 

int triple(int const i) {

  

  return i * 3;

  

}

在这个例子中,我们没有修改i. 如果在函数内部triple(),i更改了 的值,则会出现编译器错误。

 

因此,为了节省不修改参数值的函数的计算成本,我们实际上可以更进一步并使用const引用:

 

int triple(int const &i) {

  return i * 3;

}

const 确保参数不会改变。但是,通过&i引用参数,可以节省制作参数的计算成本。

 

下面有一个函数被调用,square()并且有一个main(),我们调用square()两次。

 

 

#include <iostream>

 

using namespace std;

 

int triple(int const &i) {

  return i * 3;

}

 

int main(){

 int a = 100;

 cout << triple(a) << endl;

 cout << triple(a) << endl;

}

因此输出为

 

300

300

由于我们没有修改函数中的参数,再次运行代码,输出应该是一样的


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

C++开发入门到精通--在C++指针传递引用和Const关键字

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程