Chinaunix首页 | 论坛 | 博客
  • 博客访问: 219780
  • 博文数量: 56
  • 博客积分: 2325
  • 博客等级: 大尉
  • 技术积分: 560
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-30 18:18
文章存档

2012年(7)

2011年(1)

2010年(2)

2009年(46)

我的朋友

分类: C/C++

2009-04-21 19:35:29

   
    还有个值得一说的就时return语句,我们经常用它让函数返回一个值,从而让调用函数取得最终的结果,可以说:return是被调用函数向调用函数之间传递函数的一个接口,当然你也可以用诸如引用,指针等方法达到传递多个值的结果。不带参数的return起着结束被调用程序,返回调用程序的作用,在这里它与exit很像,所不同的是,exit是返回操作系统。带返回值的return起着向函数名前的类型*赋值*的作用,如果函数名前是比较普通的类型,系统就会建立一个临时空间,把返回的数据存储进去,然后结束被调用函数,释放内存。如果是引用的话,就有可能不产生临时空间,看下面的例子:
#include

float temp;

float fn1(float r)
{
 temp=r*r*3.14;
 return temp;
}

float &fn2(float r)
{
 temp=r*r*3.14;
 return temp;

}

void main()
{
 float a=fn1(5.0);//1
 float &b=fn1(5.0);//2 warning
 float c=fn2(5.0);//3
 float &d=fn2(5.0);//4
 cout<  <  <  <}

    这里我用C++写了个程序,如上a,b,c,d四个变量的赋值方法各不相同,其中语句1,时正常的调用,从临时空间对a赋值,但b的赋值在编译时会给个警告,正如我上面说的2语句时对临时空间的一个引用,因为临时空间的值随时会被改变,这样就造成了b的值不时确定的。由于3返回的是temp的引用,直接从全局变量temp获得值,这样就避免了临时空间的产生,从而带来了执行效率的提高和空间利益。语句4把d也建立成了temp的引用了,同样也不产生临时变量,但当temp改变时,d也会随之改变,这样也增加了d值的不稳定性。可能有些新手已经被我讲的一头雾水了,其实只要抓住return是个赋值语句,就能很好的理解其中传递数据的机理了。

阅读(1101) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~