永发信息网

c++的引用问题

答案:3  悬赏:60  手机版
解决时间 2021-05-05 04:38

1:
#include <iostream.h>
int &fun()
{
static int n;

return n;
}
void main()
{
fun()=10;

}
2:
#include <iostream.h>
int fun()
{
static int n;

return n;
}
void main()
{
fun()=10;

}
请问为什么第一个程序正确,第2个程序错误??第一个返回值是引用,为什么说它返回的是一个变量的别名??而第一个不是返回的是n,那它返回的也不是变量吗??

最佳答案

定义一个变量时,变量分配了内存单元的,当此变量超出它作用域时,释放内存


传值时,执行完fun()=10完后,n内存释放,所以不能返回返回变量n;


传引用时,(引用是变量的别名),返回值是变量n的引用,在执行fun()=10时,既是将n赋值,并传引用,此时虽然n的内存释放,但存放n的地址仍在,&n返回赋值

全部回答

第二个错误是因为 它不是引用的函数返回值 所以不可以作左值 就是fun()=10;fun() 在为引用函数的时候才可以用

好比说返回值 引用函数就是返回一个指向这个值的变量

引用和值是不同的 引用是变量的别名,它就可以代表变量,表示内存中的一个位置,所以可以给它赋值 值只是表示一个大小,不是内存中地址,所以不能进行赋值。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么小小年纪,眼角却生有皱纹
忘记需要天分吗?
手机怎样领免费Q币
主机有启动的状态,但是显示屏键盘都没有反映
老三家常面馆我想知道这个在什么地方
手机怎么用存储卡下不起歌
道生万物 那谁生出了道 生道之物又何而生
知道摳圖的來幫下、
《地下城与勇士》里死灵术士有那些技能叫啥子
What will my life be like in the future?
山寨版的诺基亚6788是怎样的,去哪下载QQ,怎么
y450a pse
第二个月历假晚来是怀孕了吗
QQ飞车A车刀锋怎么样啊?过弯的时候卡吗?
下庄房我想知道这个在什么地方
推荐资讯
高斯卫浴广告牌
小鸟莺有什么特点
喜欢…是真还是假
为什么人会恨她讨厌的人
穿越火线礼物系统?
洛社这边哪里有电气厂?
表达无缘分的句子,无缘无份这是什么意思?缘
觉得活着没什么意义了,该怎么办?
为什么怎么吃都吃不胖
写东西存放在网上?
诺基亚3110C手机主菜单图标少了一个,下载到
关于一个股票?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?