函数返回值 8个月前

编程语言
395
函数返回值

通过函数进行数据交换的最简单方式是利用返回值。有返回值的函数会最终计算得到这个值,就像在表达式中使用变量时,会计算得到变量包含的值一样。与变量一样,返回值也有数据类型。

例如,有一个函数 GetString(),其返回值就是一个字符串,可以在代码中使用该函数,如下所示:

string myString;
myString = GetString();

还有一个函数 GetVal(),它返回一个 double 值,可在数学表达式中使用它。

double myVal;
double multiplier = 5.3;
myVal = GetVal() * multiplier;

当函数返回一个值时,可以采用以下两种方式修改函数:

  • 在函数声明中指定返回值的类型,但不使用关键字 void

  • 使用 return 关键字结束函数的执行,把返回值传送给调用代码。

    从代码角度看,对于我们讨论的控制台应用程序函数,其使用返回值的形式如下所示:

static <returnType> <FunctionName>()
{
    ...
        return <returnValue>;
}

这里唯一的限制是 <returnValue > 必须是 <returnType > 类型的值,或者可以隐式转换为该类型。但是,<returnType > 可以是任何类型,包括前面介绍的较复杂的类型。这段代码可以很简单:

static double GetVal()
{
    return 3.2;
}

但是,返回值通常是函数执行的一些处理的结果。上面的结果使用 const 变量也可以简单地实现。

当执行到 return 语句时,程序会立即返回调用代码。这个语句后面的代码都不会执行。但这并不意味着 return 语句只能放在函数体的最后一行。可以在前边的代码里使用 return,例如放在分支逻辑之后。把 return 语句放在 for 循环、if 块或其他结构中会使该结构立即终止,函数也立即终止。

例如:

static double GetVal()
{
    double checkVal;
    // checkVal assigned a value through some logic (not shown here).
    if (checkVal < 5)
        return 4.7;
    return 3.2;
}

根据 checkVal 的值,将返回两个值中的一个。这里的唯一限制是,必须在函数的闭合花括号 } 之前处理一个 return 语句。下面的代码是不合法的:

static double GetVal()
{
    double checkVal;
    // checkVal assigned a value through some logic.
    if (checkVal < 5)
        return 4.7;
}  ❌

如果 checkVal >= 5,就不会执行到 return 语句,这是不允许的。所有处理路径都必须执行到 return 语句。大多数情况下,编译器会检查是否执行到 return 语句,如果没有,就给出一个错误 “并不是所有的处理路径都返回一个值”。

最后需要注意的是,return 可以用在通过 void 关键字声明的函数中(这种函数没有返回值)。如果这么做,函数在执行到 return 语句时就会立即终止。以这种方式使用 return 语句时,在 return 关键字和其后的分号之间提供返回值是错误的。

image
EchoEcho官方
无论前方如何,请不要后悔与我相遇。
1377
发布数
439
关注者
2266127
累计阅读

热门教程文档

Next
43小节
MyBatis
19小节
Objective-C
29小节
Typescript
31小节
CSS
33小节