#include<iostream.h> int x; int &f() {return x;} void main() {f()=100; cout<<f()<<x<<endl; }

#include<iostream.h>intx;int&f(){returnx;}voidmain(){f()=100;cout<<f()<<x<<endl;}&不加为... #include<iostream.h>
int x;
int &f() {return x;}
void main()
{f()=100;
cout<<f()<<x<<endl;
}
&不加为什么错?f()=100; 什么作用?
展开
 我来答
osswandz
2010-11-18 · 超过13用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:0
展开全部

1。不加&的错误:并不是说函数名不加&就错了,而是因为你对f()赋值了,所以发生错误。函数名是不占用内存的,所以无法赋值;为了赋值,必须将函数名加个&,这里可以解释为对x内存单元的引用;

2。这里f()和x其实指向同一个内存单元,f()=100就是x=100的赋值。

调试截图:可以看到他们是指向同一个内存单元的。

kyno_yang
2010-11-18 · TA获得超过248个赞
知道答主
回答量:85
采纳率:0%
帮助的人:101万
展开全部
首先你要知道一点,能放在赋值号(=)左边的必须是可写的。
然后一点,函数的返回值问题,这里的f()的返回值是int& 也就是一个int型的引用。如果返回的不是引用,那么返回值会产生一个临时变量,将这个临时变量赋给等号左边对象;而如果是引用的话,就不会产生临时变量,直接将引用所指的对象赋值给等号左边的对象。
临时对象是不可以做为左值的。所以不加&就会出错。
因为这里的f返回的是x的引用,(x是个全局变量,所以他这么做是有意义的)。因此f()=100就相当于x=100。

建议你在刚开始学C++的时候先多看看书,要不一些很基本的语法问题,解释起来会很麻烦,而且意义不大。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pangdaoke
2010-11-18 · TA获得超过111个赞
知道答主
回答量:95
采纳率:0%
帮助的人:44万
展开全部
&连接符
f()=100把100赋值给f()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式