函数值传递特点:
- 形参是实参的副本,修改形参不影响实参
- 函数栈帧中形参的独立内存空间
- 适用场景:无需修改原始数据的计算逻辑
实际代码测试:
cpp
#include<iostream>
using namespace std;
//定义一个 实现两个数字进行交换的函数
void swap(int num1,int num2)
{
//输出交换前的num1,num2的值
cout<<"交换前:"<<endl;
cout<<"num1="<<num1<<endl;
cout<<"num2="<<num2<<endl;
//对num1,num2进行交换
int temp=num1;
num1=num2;
num2=temp;
//输出交换后的num1,num2的值
cout<<"交换后:"<<endl;
cout<<"num1="<<num1<<endl;
cout<<"num2="<<num2<<endl;
//不需要返回值的时候(void),可以不写return
}
int main()
{
int a=10;
int b=20;
cout<<"交换前:"<<endl;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
swap(a,b);
cout<<"交换后:"<<endl;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
system("pause");
return 0;
}
通过运行上述代码,我们可以发现实参a,b的数值在交换前后并未发生改变 ,而形参num1,num2发生了交换。下面我们将展示其背后的原理。
原理讲解



值传递的局限性
- 大结构体传递时的性能问题
- 无法通过值传递实现"输出型参数"
- 解决方案:改用指针或引用(C++)