| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 772 人关注过本帖
标题:关于函数返回引用的问题
收藏  订阅  推荐  打印 
天外飞客
Rank: 1
等级:新手上路
帖子:9
积分:178
注册:2004-12-25
关于函数返回引用的问题

在用引用返回函数值时,不用在被调函数中开辟空间放返回值,,那么这个引用要不要开辟存储空间啊,
搜索更多相关主题的帖子: 函数  空间  返回值  
2005-5-7 11:50
笨笨鸟
Rank: 1
等级:新手上路
帖子:15
积分:250
注册:2005-5-10

说清楚点?
2005-5-11 23:28
冷酷无情
Rank: 1
等级:新手上路
帖子:25
积分:350
注册:2005-5-4

用变量的引用做函数形参是地址传递,如果在函数当中改变了形参的值,也就改变了实参的值,这个和用指针来做形参类似,但是二者也有本质区别,变量的引用就是变量的别名(比如你可以有几个名字,但是每个名字都是你一样),在函数执行过程中并不为这个引用开辟内存,而指针变量是有值的,是需要开辟内存单元的;

如果在函数中定义了一个变量(假设不是静态局部变量和静态数据成员),然后需要返回这个变量的值,那么在函数调用过程中要为这个变量开辟内存单元,当调用结束时释放内存。

不知道你是不是要问这个

2005-5-12 03:27
天外飞客
Rank: 1
等级:新手上路
帖子:9
积分:178
注册:2004-12-25

不是这个,,是这样的
……
int g_i;

int fun()
{
   ……
   return g_i ;
}

void main()
{
    ……
    int k=fun();
    ……
}
一般来说,在调用fun()完返回值时,会在fun的栈区生成一个临时变量,把g_i拷贝到临时变量,然后再把这个临时变量值赋给k。

那么如果返回的是一个引用,那么这会不会在栈区生成一个临时的变量呢??

2005-5-13 21:30
笨笨鸟
Rank: 1
等级:新手上路
帖子:15
积分:250
注册:2005-5-10

fun()的g_i和外面的g_i不是一回事吧?

我是菜鸟,还请大虾谈谈

2005-5-13 23:16
天外飞客
Rank: 1
等级:新手上路
帖子:9
积分:178
注册:2004-12-25

就是对同一个数据的操作。。。

2005-5-13 23:19
tary
Rank: 4
等级:高级会员
帖子:781
积分:8060
注册:2004-10-5

我想引用的慨念你应该知道吧..
引用不同于指针.. 指针要分配内存空间..而引用不用分配内存空间,这一方面减少了内存的乱用情况啊.

┌→¨ ≮我可以学会对你很冷落≯¨←┐ │  <却学不╓══╦══╖会将爱> │ │¨←┐ ╭╩╮哭‖哭╭╩╮ ┌→¨│ └──┘收 ╲╱ ◇‖◇ ╲╱回└──┘
2005-5-15 10:08
天外飞客
Rank: 1
等级:新手上路
帖子:9
积分:178
注册:2004-12-25

引用肯定要分配空间拉,,不然怎么放啊,哈哈……
只是c++屏蔽了对引用的访问,所以逻辑上可以认为这样,,但是实际上就不是这样了的拉

2005-5-15 14:27
live41
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:67
帖子:12422
积分:126000
注册:2004-7-22

啊?引用好象不占空间吧?
2005-5-15 15:36
hu_sir
Rank: 3Rank: 3
等级:中级会员
帖子:208
积分:2230
注册:2004-4-29

是不会开辟临时空间的!

============================== 欢迎交流!
2005-5-18 12:52
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.053087 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved