| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1730 人关注过本帖
标题:关于利用引用返回返回静态局部变量有点问题
只看楼主 加入收藏
shangke
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2009-8-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
关于利用引用返回返回静态局部变量有点问题
#include <iostream>
using namespace std;
int & func()
{
static int a; //静态局部变量a的生命周期是全局的
return a;//返回一个生命周期长于func函数执行期的变量
}
int main()
{
int &ra=func(); //ra为静态变量的别名
cout<<func()<<endl; //输出0 ,静态变量默认为0
func()+=8;     //作为左值使用
cout<<func()<<endl;//输出8
ra +=10;                  // 丧失了局部可见性
cout<<func()<<endl;//输出18
return 0;
}

代码中第3行的int & func() 是否是引用变量的定义?,我知道声明是需要绑定一个变量实体,这个我感觉像定义


在此先谢谢各位大牛了

[[it] 本帖最后由 shangke 于 2009-8-3 15:52 编辑 [/it]]
搜索更多相关主题的帖子: 变量 局部 静态 
2009-08-03 15:44
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:0 
你的意思是
第6行:return a;
吧?

[[it] 本帖最后由 CrystalFan 于 2009-8-3 15:51 编辑 [/it]]
2009-08-03 15:50
shangke
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2009-8-3
收藏
得分:0 
回复 2楼 CrystalFan
是的嘿嘿   第3行是定义吧

我的博客:http://hi.baidu.com/hk_csm
2009-08-03 15:53
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:0 
int & 应该还是表示 func() 函数的返回值类型是int型的引用

[[it] 本帖最后由 CrystalFan 于 2009-8-4 01:03 编辑 [/it]]
2009-08-04 01:01
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:20 
引用要绑定实体,这个实体是 int &ra=func(); 语句等号右边的值,即函数func()的返回值(也是一个引用,而这个引用每次调用时在return 语句中被初始化为静态变量a),
所以,ra的实体是a。
代码:
程序代码:
#include <iostream>
using namespace std;
int & func()
{
static int a; //静态局部变量a的生命周期是全局的
static int j;
printf("&a=%ld,&j=%ld\n",&a,&j);
return a;//返回一个生命周期长于func函数执行期的变量
}
int main()
{
int i;
int &ra=func(); //ra为静态变量的别名
printf("&ra=%ld,&i=%ld\n",&ra,&i);
cout<<func()<<endl; //输出0 ,静态变量默认为0
func()+=8;     //作为左值使用
cout<<func()<<endl;//输出8
ra +=10;                  // 丧失了局部可见性
cout<<func()<<endl;//输出18
return 0;
}

可以证明ra的实体是a。
2009-08-04 01:16
shangke
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2009-8-3
收藏
得分:0 
回复 5楼 CrystalFan
哦 我明白了非常谢谢您的指导

我的博客:http://hi.baidu.com/hk_csm
2009-08-04 14:16
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:0 
术业有专攻,我们取长补短,共同学习吧
2009-08-04 18:10
快速回复:关于利用引用返回返回静态局部变量有点问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020451 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved