在这个实例中,函数 box()中使用了 return 语句返回 length * width * height,然后这个返回
值被赋值给 answer。也就是说,在调用的时候,return 语句返回的值就变成了 box()的值。
既然 box()函数现在是返回一个值的,那么它的返回类型就不再是 void 的了。(请记住,void
只有在函数不返回任何值的时候才使用。)而是被声明成返回一个类型为 int 的值。请注意,放置在
函数名称之前的返回类型在函数的原型和函数的定义中都是要有的。
当然,int 类型并不是唯一的函数可以返回的类型。正如前面讲到的那样,函数可以返回除了数
组之外的任意类型。例如,下面的程序中,我们重写了 box() 函数,它的参数为 double 类型,返
回类型也是 double 类型。
#include <iostream>
using namespace std;
//使用 double 数据类型
double box(double length, double width, double height);
int main()
{
double answer;
answer = box(10.1,11.2,3.3 );
cout << "The volume is " << answer;
return 0;
}
//这个版本中,box 函数使用 double 数据类型
double box(double length, double width, double height )
{
return length * width * height;
}
程序的输出如下:
The volume is 373.296
还有一点:如果在一个非空的返回值的函数中,由于遇到了函数体结束的右括号而结束,则返回值
是不确定的。根据 C++语言的语法,无返回值的函数并不一定需要 return 语句,函数在遇到函数
体结束的右括号的时候就自动返回。然而,如果一个函数如果是有返回值的,那么这种遇到函数体
结束的右括号而返回的值则是垃圾数据。当然,好的编程实践告诉我们,在任何非空返回值的函数
中,我们都要使用 return 语句来明确返回值。
必备技能 5.5:在表达式中使用函数
在前面的示例中,box()函数的返回值被赋值给了一个变量,然后通过使用 cout 语句输出了变量
的值。这样做虽然是正确的,但是我们可以在 cout 语句中直接使用函数的返回值来重写这个程序,
这样程序的效率会更高。例如,前面程序中的 main()函数可以按照下面的方式被重写:
int main()
{
//直接使用 box()函数的返回值
cout << "The volume is " << box(10.1, 11.2, 3.3);