C++参数传递
1.按值传递
import std;
void fun(int number) {number ++;}
int main(){
int a = 1;
fun(a);
cout << n << endl;
}
输出:1
这种情况下,函数调用时是copy了a的值在内存中存了一个副本,调用结束会把副本释放掉。所以不会改变a的值。
缺点:无法改变实参的值,并且会花销额外的内存。
2.通过引用(&)传递
使用这种方法,我们可以对实参进行操作,而且不会浪费内存。
我们不是创建一个虚拟参数并传递它的值,而是传递变量的别名。
import std;
void fun(int &number){number++;}
int main(){
int a = 1;
fun(a);
cout << n << endl;
}
OUTPUT:2
在调用函数时相当于
int main(){
int a = 1;
{
int& number = a;
number++;
}
cout << n << endl;
}
3.使用常量引用(const &)传递值
为什么要这样做呢?
通常使用const参数的原因是我们不想要改变传入参数的值,使用&传递是为了改变传入参数的值。这不是冲突了吗?
原来是我们不想浪费任何内存并且不想更改变量名的值。
void fun(const int &number) { number++; }
int main() {
int a = 30;
fun(a);
cout << a << endl;
}
output:error:assignment of read-only reference 'number'
出现error了,因为在函数中我们对一个cosnt int
做了自增改变。
如果函数功能只是打印number值就没问题。
补充:上述函数 fun
可以在 cast 的帮助下改变它的值。