在C++指针传递引用和Const关键字

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

创新互联是一家集网站建设,溆浦企业网站建设,溆浦品牌网站建设,网站定制,溆浦网站建设报价,网络营销,网络优化,溆浦网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

引用传递

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

这使我们能够:

  • 修改函数参数的值。
  • 出于性能原因,避免复制变量/对象。

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

 
 
 
  1. #include 
  2. using namespace std;
  3. void swap(int &i,int &j){
  4.   int temp = i;
  5.   i = j;
  6.   j = temp;
  7.  }
  8. int main(){
  9.  int a = 100;
  10.  int b = 200;
  11.  swap(a,b);
  12.  cout << a << endl;
  13.  cout << b << endl;
  14. }

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

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

 
 
 
  1. 200
  2. 100

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

 
 
 
  1. #include 
  2. int triple(int i) {
  3.   i = i * 3;
  4.   return i;
  5. }
  6. int main() {
  7.   int num = 1;
  8.   std::cout << triple(num) << "\n";
  9.   std::cout << triple(num) << "\n";
  10. }

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

因此输出为

 
 
 
  1. 3
  2. 3

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

 
 
 
  1. #include 
  2. int triple(int &i) {
  3.   i = i * 3;
  4.   return i;
  5. }
  6. int main() {
  7.   int num = 1;
  8.   std::cout << triple(num) << "\n";
  9.   std::cout << triple(num) << "\n";
  10. }

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

因此输出为

 
 
 
  1. 3
  2. 9

使用 Const 传递

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

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

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

 
 
 
  1. int triple(int const i) {
  2.  
  3.   return i * 3;
  4.  
  5. }

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

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

 
 
 
  1. int triple(int const &i) {
  2.   return i * 3;
  3. }

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

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

 
 
 
  1. #include 
  2. using namespace std;
  3. int triple(int const &i) {
  4.   return i * 3;
  5. }
  6. int main(){
  7.  int a = 100;
  8.  cout << triple(a) << endl;
  9.  cout << triple(a) << endl;
  10. }

因此输出为

 
 
 
  1. 300
  2. 300

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

本文题目:在C++指针传递引用和Const关键字
当前链接:http://www.shufengxianlan.com/qtweb/news35/396285.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联