21xrx.com
2024-12-23 00:35:19 Monday
登录
文章检索 我的文章 写文章
C++函数参数的传递方式
2023-06-28 22:06:48 深夜i     --     --
C++ 函数 参数传递方式

C++ 是一种非常强大的编程语言,它支持多种函数参数的传递方式。不同的参数传递方式在不同场景下各有优缺点,因此,我们需要根据实际情况进行选择。

参数传递的方式主要分为值传递、指针传递和引用传递。

1. 值传递

值传递是最常见、最简单的传递方式。该方式的特点是将参数的“值”作为一个新变量副本传递给函数,函数对变量的改动不影响原来的变量。值传递通常在传递基本类型的参数时使用,例如 int、float、double 等。

下面是一个简单的例子:


void foo(int a, int b){

  a++;

  b++;

}

int main(){

  int x=1;

  int y=2;

  foo(x, y);

  cout << "x=" << x << " y=" << y << endl;

  return 0;

}

在这个例子中,函数 foo 接受两个参数,参数 a 和 b 都是 int 类型,它们被传入函数时的值分别是 x 和 y 的副本。由于 x 和 y 是整型变量,因此它们是基本类型,foo 函数接受的是它们的副本。在 foo 函数内部,a 和 b 的值分别被增加了 1,但是这对 x 和 y 并没有影响,实际输出的结果是 x=1 y=2。

2. 指针传递

指针传递是将变量的地址作为参数传递给函数。函数接受指针作为参数后,可以通过该指针来修改传递进来的变量。因为指针传递能改变原始变量的值,所以它通常应用于希望修改参数值的函数,例如 swap 函数。

下面是一个简单的例子:


void swap(int* a, int* b){

  int tmp = *a;

  *a = *b;

  *b = tmp;

}

int main(){

  int x=1;

  int y=2;

  swap(&x, &y);

  cout << "x=" << x << ", y=" << y << endl;

  return 0;

}

在这个例子中,swap 函数接受两个 int 类型的指针作为参数 a 和 b,它们用于交换变量 x 和 y 的值。在 swap 函数内部,我们将 a、b 所指向的地址对应的值进行了交换,并没有改变 a、b 指针的值。当我们调用 swap 函数时,我们将 x 和 y 的地址通过指针传递给了 swap 函数。通过修改地址对应的值,我们成功地交换了变量 x 和 y 的值。

3. 引用传递

引用传递是将变量的引用作为参数传递给函数。与指针不同的是,引用传递允许函数直接访问原始变量的值,而不是副本。引用传递通常在修改参数值时使用,因为它可以避免副本的不必要拷贝操作。

下面是一个简单的例子:


void increment(int& a){

  a++;

}

int main(){

  int x=1;

  increment(x);

  cout << "x=" << x << endl;

  return 0;

}

在这个例子中,我们定义了一个 increment 函数,该函数接受一个 int 类型的引用作为参数 a。当我们调用 increment 函数时,我们将 x 的引用作为参数传递给了该函数。在函数内部,我们对 a 的值进行增加。由于 a 是 x 的引用,所以在函数调用结束后,x 的值也就变为了 2。

总之,正确的函数参数传递方式取决于具体的需求。值传递适用于不需要修改参数值的函数和基本类型变量。指针传递适用于需要修改参数值的函数,例如 swap 函数。而引用传递适用于需要修改参数值的函数和用户自定义类型。通过使用正确的参数传递方式,我们可以增强程序的性能和可读性。

  
  

评论区

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