在前三课,你学到了传递的参数的值,参考函数,和地址。在本节中,我们将考虑返回值返回给调用者,通过所有三个方法问题。
事实上,从一个函数的地址值,它的调用者返回值,或参考作品几乎完全相同的方式作为参数传递给函数做。所有相同的好处和缺点的每个方法都存在。两者之间的主要差别是,数据流的方向是相反的。然而,还有一个附加位的复杂性,因为在一个函数的局部变量超出范围当函数返回时,我们需要考虑这种效果在每个返回类型。
(作者注:这节课有一个有趣的课数,因为它最初是从7章略)
返回值
返回值是最简单和安全的返回类型使用。一个值时返回的值,该值的一个副本被返回给调用者。与传值,你可以通过返回值的字面值(如5),变量(如X),或表达(如x + 1),使用非常灵活的返回值。
通过价值回归的另一个优点是,您可以返回变量(或表达式),包括局部变量在函数声明。因为变量函数超出范围之前,评估,和副本的值返回给调用者,有没有问题,当变量超出作用域在函数的末尾。
1
2
3
4
5
int DoubleValue(int nX)
{
int nValue = nX * 2;
return nValue; // A copy of nValue will be returned here
} // nValue goes out of scope here
返回值是最合适的时候返回变量,在函数内部声明,或返回函数的参数是按值传递的。然而,像传值,返回值是缓慢的结构和大类。
引用返回
就像通过参考引用,返回的值必须是变量(你可以不回参考文字或表达式)。当通过引用返回的变量,一个变量的引用传递回调用方。然后打电话者可以使用这个参考继续修改的变量,它可以是有用的时候。引用返回的也快,可当返回结构和类。
然而,返回引用有一个附加的缺点,通过参考不通你不能通过引用返回函数的局部变量。考虑下面的例子: