作用:引用是可以作为函数的返回值存在的
注意:不要返回局部变量引用
用法:函数调用作为左值
#include<iostream>
#include<string>
#include <fstream>
#include<windows.h>
using namespace std;
//返回局部变量引用
int& test01()
{
int a = 10; //局部变量
return a;
}
//返回静态变量引用
int& test02()
{
static int a = 20;
return a;
}
int* test03()
{
static int b = 30;
return &b;
}
int main()
{
//不能返回局部变量的引用
int& ref = test01();
cout << "ref = " << ref << endl;
cout << "ref = " << ref << endl;//乱码,因为栈区数据被释放了
//如果函数做左值,那么必须返回引用
//思考:返回指针的函数可以作为左值吗?test03实验一下
int& ref2 = test02();
cout << "ref2 = " << ref2 << endl;
cout << "ref2 = " << ref2 << endl;
test02() = 1000;//函数作为左值,因为test02返回的是引用,所以运行正常,相当于把test02修改为1000
cout << "ref2 = " << ref2 << endl;
cout << "ref2 = " << ref2 << endl;
int* p = test03();
cout << "p=" << *p << endl;
cout << "p=" << *p << endl;
test03() = 500;//报错提示表达式必须是可修改的左值
system("pause");
return 0;
}