为什么要用引用作为函数的返回值(c++问题)

来源:百度知道 编辑:UC知道 时间:2024/06/30 13:05:00
看看下面的错误程序,运行会出错
#include<iostream.h>
int f1(int n,int s[])
{
int m=s[n];
return m;
}
void main()
{
int s[]={5,4,3,2,1};
f1(3,s)=10;
cout<<f1(3,s)<<endl;

}
如果改成下面的程序就是对的了
#include<iostream.h>
int &f1(int n,int s[])
{
int &m=s[n];
return m;
}
void main()
{
int s[]={5,4,3,2,1};
f1(3,s)=10;
cout<<f1(3,s)<<endl;

}
其实就是把那个f1的返回值类型变了一下就可以了,

第一个代码
f1(3,s)用值返回 它是一个临时量 自动有const属性
再使 = 引发错误
第一个代码
f1(3,s)用引用返回 f1(3,s)引用了s[3] 这是个左值
再使 = 不会错了

其实就是C语言中所说的传值调用与传地址调用的关系:

另外,怎么感觉程序中所定义的f1函数没什么用啊?