C++参数传递
值传递:创造一个副本,函数内部的操作都是对此副本的操作
void print(int x) {
std::cout << "The value is: " << x ;
}
目的:简单直观,适合小型对象
引用传递:对原始数据直接操作,会改变原始数据
void print(int &x) {
std::cout << "The value is: " << x ;
}
目的:1、避免拷贝带来的开销,适合大型对象;2、为了通过这个函数修改原始参数
const&传递:
void print(const int &x) {
std::cout << "The value is: " << x ;
// x = 10; // 编译错误:不能修改const引用
}
目的:为了高效传递参数,而且不改变原始数据。(在函数内部对它修改会报错)
指针传递:对原始数据操作,会改变原始数据
// 按指针传递
void modifyValueByPtr(int *x) {
if (x != nullptr) { // 检查指针是否为空
*x = 200; // 修改指针所指向的值
std::cout << "Inside modifyValueByPtr, *x is now: " << *x << std::endl;
} else {
std::cout << "modifyValueByPtr received a null pointer." << std::endl;
}
}
int *x 表示x是一个指针,它指向一个整数型变量的地址,而不是这个整数
int *x;x = &value;表示x是一个指向int型变量的指针,&value表示吧value这个变量的地址赋给x