有两种将值或数据传递给C语言函数的方法:按值调用和按引用调用。原始值不会在按值调用中进行修改,但会在按引用进行调用时进行修改。
让我们一一理解C++语言中的按值调用和按引用调用。
在按值调用中,原始值未修改,传递给函数的值由函数参数本地存储在堆栈存储器位置中。如果更改函数参数的值,则仅对当前函数进行更改。它不会更改调用方方法(例如main())内的变量值。
让我们尝试通过以下示例了解C++语言中按值调用的概念:
#include <iostream> 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++语言中的引用调用的概念:
链接:https://www.learnfk.comhttps://www.learnfk.com/c++/call-by-value-and-call-by-reference-in-cpp.html
来源:LearnFk无涯教程网
#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<<"Value of x is: "<<x<<endl; cout<<"Value of y is: "<<y<<endl; return 0; }
输出:
Value of x is: 100 Value of y is: 500
不。 | 按值调用 | 引用调用 |
---|---|---|
1 | 值的副本传递给函数 | 将值的地址传递给函数 |
2 | 函数内部所做的更改不会反映在其他函数上 | 在函数内部所做的更改也反映在函数外部 |
3 | 将在不同的内存位置创建实际参数和形式参数 | 将在相同的内存位置创建实际和正式参数 |
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)