函数返回值 3个月前

编程语言
367
函数返回值

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

例如,有一个函数 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
关注者
2223539
累计阅读

热门教程文档

Rust
84小节
C#
57小节
Typescript
31小节
Java
12小节
Dart
35小节