C++ 函数按值调用
将参数传递给函数的按值调用方法会将参数的实际值复制到函数的形式参数中。在这种情况下,函数内部对参数的更改不会影响参数本身。
默认情况下,C++ 使用按值调用来传递参数。通常,这意味着函数内的代码无法更改用于调用函数的参数。考虑如下函数 swap() 的定义。
// 用于交换值的函数定义。 void swap(int x, int y) { int temp; temp = x; /* 保存 x 的值 */ x = y; /* 将 y 赋值给 x */ y = temp; /* 将 x 赋值给 y */ return; }
现在,让我们通过传递实际值来调用函数 swap(),如下例所示 -
#include <iostream> using namespace std; // 函数声明 void swap(int x, int y); int main () { // 局部变量声明: int a = 100; int b = 200; cout << "交换之前,a 的值:" << a << endl; cout << "交换之前, b 的值:" << b << endl; // 调用函数来交换值。 swap(a, b); cout << "交换后,a 的值:" << a << endl; cout << "交换后,b的值:" << b << endl; return 0; }
当将上述代码放在一个文件中、进行编译和执行时,它会产生以下结果 -
交换之前,a 的值:100 交换之前, b 的值:200 交换后,a 的值:100 交换后,b的值:200
这表明虽然函数内部的值已经改变,但值本身并没有改变。