参数传递

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 的帮助下改变它的值。

posted @ 2024-08-20 22:35  岁月童话剧  阅读(40)  评论(0)    收藏  举报