📜  C++ 值调用和 引用调用

📅  最后修改于: 2020-10-17 04:57:34             🧑  作者: Mango

在C++中按值调用和按引用调用

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

让我们一一理解C++语言中的按值调用和按引用调用。

在C++中按值调用

在按值调用中,原始值不会被修改。

在按值调用中,传递给函数的值由函数参数本地存储在堆栈存储器位置中。如果更改函数参数的值,则仅对当前函数更改。它不会更改调用方方法(例如main())内的变量值。

让我们尝试通过以下示例理解C++语言中按值调用的概念:

#include 
using namespace std;
void change(int data);
int main()
{
int data = 3;
change(data);
cout << "Value of the data is: " << data<< endl;
return 0;
}
void change(int data)
{
data = 5;
}

输出:

Value of the data is: 3

在C++中通过引用调用

在通过引用进行调用时,因为我们传递了引用(地址),所以原始值被修改。

此处,值的地址在函数传递,因此实际参数和形式参数共享相同的地址空间。因此,在函数内部改变值,被反射内以及之外的函数。

注意:要通过引用了解调用,您必须具有指针的基本知识。

让我们尝试通过以下示例理解C++语言中的引用调用的概念:

#include
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);  // passing value to function
 cout<<"Value of x is: "<

输出:

Value of x is: 100
Value of y is: 500   

C++中按值调用和按引用调用之间的区别

No. Call by value Call by reference
1 A copy of value is passed to the function An address of value is passed to the function
2 Changes made inside the function is not reflected on other functions Changes made inside the function is reflected outside the function also
3 Actual and formal arguments will be created in different memory location Actual and formal arguments will be created in same memory location