无法更改函数中的值

Cra*_*rse 3 c++

我开始发展,抱歉这个新手问题.

我需要创建一个在2个变量之间交换值的函数.

我已经编写了这段代码,但是没有对变量进行任何更改,我应该更改什么?我的错是什么?

#include <iostream>
using namespace std;

void swap_values( int x, int y);
int main(void) {
   int a,b;    
   a = 2;   
   b = 5;  
   cout << "Before: " << a << " " << b << endl; 
   swap_values( a,b );   
   cout << "After: " << a << " " << b  << endl;   
}  
void swap_values( int x, int y ){
   int z;
   z = y;
   y = x;
   x = z;
}
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 10

您需要通过引用传递变量:

void swap_values( int& x, int& y )
{
   int z;
   z = y;
   y = x;
   x = z;
}
Run Code Online (Sandbox Code Playgroud)

pass-by-value并且pass-by-reference是主要编程语言中的关键概念.在C++中,除非您指定by-reference,否则pass-by-value会发生.

它基本上意味着它不是传递给函数的原始变量,而是副本.

这就是为什么在函数之外,变量保持不变 - 因为在函数内部,只修改了副本.

如果通过reference(int& x, int& y)传递,则该函数对原始变量进行操作.