21xrx.com
2025-06-22 00:09:06 Sunday
文章检索 我的文章 写文章
C++函数参数的改变及影响
2023-07-11 15:25:23 深夜i     33     0
C++函数 参数改变 影响

C++语言中的函数参数是传值的,即在函数调用时,实参的值被复制一份传递到形参中。因此,在函数内部改变形参的值并不会影响到实参的值。

假设有如下的代码:

void swap(int a, int b)
  int tmp = a;
  a = b;
  b = tmp;
int main() {
  int x = 1, y = 2;
  swap(x, y);
  cout << x << " " << y << endl;
  return 0;
}

我们期望交换x和y的值,但是输出结果为1 2,即并没有交换成功。这是因为在swap函数中,a和b只是x和y的拷贝,对它们所做的改变并不会影响到x和y本身。

为了解决这个问题,我们可以使用指针或引用作为函数参数。这样,在函数内部对指针或引用所指向的变量进行操作,就能够直接影响到实参。

使用指针的代码如下:

void swap(int* a, int* b) {
  int tmp = *a;
  *a = *b;
  *b = tmp;
}
int main() {
  int x = 1, y = 2;
  swap(&x, &y);
  cout << x << " " << y << endl;
  return 0;
}

使用引用的代码如下:

void swap(int& a, int& b)
  int tmp = *a;
  *a = *b;
  *b = tmp;
int main() {
  int x = 1, y = 2;
  swap(x, y);
  cout << x << " " << y << endl;
  return 0;
}

这两种方式都能够成功地交换x和y的值。

总之,C++函数参数的改变会影响到形参本身,但并不会影响到实参。如果我们希望函数能够直接改变实参的值,可以使用指针或引用作为函数参数。

  
  

评论区