21xrx.com
2024-12-22 21:23:39 Sunday
登录
文章检索 我的文章 写文章
C++参数传递方式:值传递和引用传递
2023-07-01 00:47:19 深夜i     --     --
C++ 参数传递方式 值传递 引用传递 函数调用

在C++编程中,参数传递是常见的操作,它指的是将某些值传递给函数作为参数。C++提供了两种参数传递方式:值传递和引用传递。这两种传递方式虽然都可以实现参数传递,但它们的方式和效果有所不同。

值传递是指将实际参数的值复制一份传递给形式参数,函数体内改变形式参数的值并不影响实际参数的值。也就是说,在使用值传递的情况下,对参数的任何修改只是在形式参数内进行的,而并不影响实际参数本身。

引用传递则是将实参的一个别名作为形参传递给函数,使用引用传递时,对形参的修改其实就是对实参的修改。换句话说,在使用引用传递时,函数内所作的一切操作都是直接针对实际参数进行的。因此,引用传递可以用来直接修改实参的值。

下面是一个使用值传递和引用传递的例子,以更好地理解它们之间的差异。


#include <iostream>

using namespace std;

void valuePass(int arg){

  arg += 1;

  cout << "In valuePass(), arg is " << arg << endl;

}

void referencePass(int& arg){

  arg += 1;

  cout << "In referencePass(), arg is " << arg << endl;

}

int main(){

  int num = 10;

  cout << "Before calling valuePass(), num is " << num << endl;

  valuePass(num);

  cout << "After calling valuePass(), num is " << num << endl << endl;

  cout << "Before calling referencePass(), num is " << num << endl;

  referencePass(num);

  cout << "After calling referencePass(), num is " << num << endl;

  return 0;

}

输出结果为:


Before calling valuePass(), num is 10

In valuePass(), arg is 11

After calling valuePass(), num is 10

Before calling referencePass(), num is 10

In referencePass(), arg is 11

After calling referencePass(), num is 11

由此可见,值传递时形参的操作不影响实参,而引用传递时形参的操作直接修改了实参。

总结来看,使用值传递可以避免误操作改变了原始数据。而引用传递则方便了对大量的数据进行操作,避免了值传递时的大量拷贝操作。在实际编程中,要结合实际情况选择参数传递方式。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复