C++ 返回值return为引用时报错为局部变量local variable

我们来研究一下如下函数:

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
发布了182 篇原创文章 · 获赞 71 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_43827595/article/details/104107159
今日推荐