面试题答案
一键面试值传递和引用传递的区别
- 值传递:在值传递时,函数接收的是实参值的一个副本。对形参的任何修改都只在函数内部有效,不会影响到函数外部的实参。这是因为形参和实参在内存中是不同的存储位置,形参只是实参的一份拷贝。
- 引用传递:引用传递时,函数接收的是实参的引用,即实参的别名。对形参的修改等同于对实参的修改,因为它们指向相同的内存位置。
代码示例
#include <iostream>
// 值传递函数
void changeValueByValue(int num) {
num = num * 2;
std::cout << "在值传递函数内部,num的值为: " << num << std::endl;
}
// 引用传递函数
void changeValueByReference(int& num) {
num = num * 2;
std::cout << "在引用传递函数内部,num的值为: " << num << std::endl;
}
int main() {
int value = 5;
std::cout << "调用值传递函数前,value的值为: " << value << std::endl;
changeValueByValue(value);
std::cout << "调用值传递函数后,value的值为: " << value << std::endl;
std::cout << "调用引用传递函数前,value的值为: " << value << std::endl;
changeValueByReference(value);
std::cout << "调用引用传递函数后,value的值为: " << value << std::endl;
return 0;
}
在上述代码中:
changeValueByValue
函数采用值传递方式,函数内部对num
的修改不会影响到函数外部的value
。changeValueByReference
函数采用引用传递方式,函数内部对num
的修改会直接影响到函数外部的value
。