分类: 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是个赋值语句,就能很好的理解其中传递数据的机理了。