21xrx.com
2024-12-22 20:59:39 Sunday
登录
文章检索 我的文章 写文章
C++函数参数的改变及影响
2023-07-11 15:25:23 深夜i     --     --
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++函数参数的改变会影响到形参本身,但并不会影响到实参。如果我们希望函数能够直接改变实参的值,可以使用指针或引用作为函数参数。

  
  

评论区

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