我们来研究一下如下函数:
int &func1() {
int i;
i = 1;
return i;
}
错误1:这里func1里的i是局部变量,退出函数后就消失了,你引用了一个消失的变量当然会出问题
错误2:参数传引用时,必须接受一个实际的变量,不然也是在引用一个临时的东西
正确做法
定义一个参数,接受一个main代码中的变量,并引用它
代码:
#include <iostream>
using namespace std;
int &func1(int &i) {
i = 1;
return i;
}
int main() {
int a;
cout << func1(a) << endl;
func1(a) = 77; // func1(a)的返回值引用了a所以等于a = 77
cout << a << endl;
func1(a) ++;
cout << a << endl;
return 0;
}
输出:
1
77
2