首页 > 编程笔记 > C++笔记 阅读:21

C++函数的返回值(附带实例)

C++ 的函数就像一个具有特定功能的箱子,我们把原材料数据通过函数参数放入这个“函数箱子”中,经过一定的处理后,箱子会输出我们想要的结果值。

例如,把两个整数传入 Add() 函数,经过加法处理后,得到的就是这两个整数之和。通过函数参数,我们可以把原材料数据输入到函数箱子中,那么我们又如何从函数箱子中取出结果值呢?

还记得在声明函数时,我们需要指定函数的返回值类型吗?只要一个函数的返回值类型不是 void,它就具有返回值,而我们就是通过函数的返回值从函数中取得结果值。

下面我们仍以 Add() 函数为例:
// 定义一个函数,用于计算两个整数的和
int Add(int a, int b)
{
    // 计算结果
    int res = a + b;
    // 利用 return 关键字返回计算结果
    return res;
}

// 调用函数,获得计算结果
int nRes = Add(2, 3);
在函数内部,首先对通过参数传递进来的原材料数据 2 和 3 进行加法计算,得到结果值为 5。然后,使用 return 关键字结束函数的执行,并将结果值 5 返回。从调用这个函数的外部来看,该结果值就是整个函数调用表达式 Add(2,3) 的值。因此,我们可以把这个值赋给 nRes 变量,nRes 变量的值就变为 5。

也就是说,我们通过返回值从 Add() 函数中获得了结果值 5。换句话说,函数调用表达式的值就是从函数箱子中取出的结果值,该结果值的数据类型就是函数返回值的数据类型。

既然整个函数调用表达式可以看作从函数得到的结果值,且拥有特定的数据类型,那么除可以用它对变量进行赋值外,还可以将其应用到任何可以使用此类型数值的地方参与计算。

例如,函数调用表达式可以用在条件语句中表示某个复杂条件是否成立:
// IsFinished() 函数的返回值是 bool 类型
// 调用它,就可以把它看作是一个 bool 类型的数据,可以直接将它的返回值与 true 进行逻辑运算
if (true == IsFinished())
{
    // ...
}

另外,对于调用返回值为 bool 类型的函数的表达式,可以把它视为一个 bool 类型的数据,从而上面的代码还可以改写成下面这种更简洁的形式:
// 直接判断 IsFinished() 函数的返回值是否为 true
// 如果我们要判断 IsFinished() 函数的返回值是否为 false
// 则可以使用 if(!IsFinished()) 的形式
if (IsFinished())
{
    // ...
}

函数调用表达式还可以作为另一个函数调用的参数,即直接作为参数参与另一个函数调用。例如:
// 函数调用表达式Power(2)和Power(3)的返回值是整型数值
// 直接用作Add()函数的整型参数参与其调用
int nRes = Add( Power(2), Power(3) );
在执行计算时,首先会分别得到 Power(2) 和 Power(3) 这两个函数调用的返回值 4 和 9。然后,以这两个数据作为参数调用 Add() 函数,得到最终结果 13。

需要注意的是,把函数调用表达式的返回值作为参数直接参与另一个函数的调用,这种方式虽然可以让代码更加简洁,但在一定程度上降低了代码的可读性。因此,应有选择性地使用这种方式,避免形成过于复杂的表达式,以便在代码简洁性与可读性之间取得平衡。

相关文章