在 C 语言中,将值或数据传递给函数有两种方法:按值调用和按引用调用。原始值在按值调用中不被修改,但在按引用调用中被修改。

下面我们来一一了解C++语言中的值调用和引用调用。
在按值调用中,不修改原始值。
在按值调用中,传递给函数的值由函数参数本地存储在堆栈内存位置中。如果更改函数参数的值,则仅针对当前函数进行更改。它不会改变调用者方法中变量的值,例如 main()。
让我们通过下面给出的例子来尝试理解 C++ 语言中按值调用的概念:
#include <iostream>
using namespace std;
void change(int data);
int main()
{
int data = 3;
change(data);
cout << "数据的值为:" << data<< endl;
return 0;
}
void change(int data)
{
data = 5;
}
输出:
数据值为:3
在引用调用中,原始值被修改,因为我们传递了引用(地址)。
这里,值的地址是在函数中传递的,因此实际参数和形式参数共享相同的地址空间。因此,函数内部的值改变,反映在函数内部和外部。
注意:要理解引用调用,必须具备指针的基本知识。
让我们通过下面给出的例子来尝试理解C++语言中引用调用的概念:
#include<iostream>
using namespace std;
void swap(int *x, int *y)
{
int swap;
swap=*x;
*x=*y;
*y=swap;
}
int main()
{
int x=500, y=100;
swap(&x, &y); // 将值传递给函数
cout<<"x 的值为:"<<x<<endl;
cout<<"y 的值为:"<<y<<endl;
return 0;
}
输出:
x 的值为:100 y 的值为:500
| 不。 | 按值调用 | 通过引用调用 |
|---|---|---|
| 1 | 将值的副本传递给函数 | 值的地址被传递给函数 |
| 2 | 函数内部所做的更改不会反映在其他函数上 | 函数内部所做的更改也反映在函数外部 |
| 3 | 实际参数和形式参数将在不同的内存位置创建 | 实际参数和形式参数将在同一内存位置创建 |