我们必须在函数"return"末尾写什么?在 C++ 中

what for we have to write at the end of the function "return"? in c++

本文关键字:什么 C++ return 函数 我们      更新时间:2023-10-16

有人可以问我函数末尾的"返回"是什么以及为什么我们必须在主函数末尾写 return 0.e.g

int main()
 {
  .....
  return 0;
 }

不必在C++main末尾写入return;返回值 0 是隐式的。(这在 C 中是不同的,在 C 中你必须返回一个值。

这样做是将一个值返回给程序的环境,以便可以知道程序是成功(零(还是遇到一些错误(非零(。其他程序,包括shell脚本/批处理文件可以使用此信息来做出决策,例如,当它们运行的程序中遇到错误时,它们可以提前停止。

所有支持函数调用的 CPU 都有一个类似 RET 的指令,以显式地从被调用函数内部返回调用函数的代码。函数调用后要返回的代码的内存地址已经保存在"众所周知的地方"(例如堆栈(。RET指令将检索该内存地址并将 CPU 指向正确的位置,以便在原始函数调用之后的代码上恢复执行。

在 c++ 中,某些函数被声明为"返回"特定值(如上面的函数 main(,而其他函数从不返回任何值(声明为返回类型为 void 的值(。如何声明所编写的函数由您选择。如果函数返回类型为 void,则代码中不需要显式 return 语句,除非您过早返回,例如从 if、else 或循环内部返回。例如:

void foo(int x) {
    if (x == 0)
        return; // premature return to caller
    int b = x*2;
    // do some more stuff
    // and now no need to say return, its done implicitly because we are at function end
}

但是,当您的函数被声明为具有非 void 返回类型(例如 int(时,您应该在函数中有一个显式 return 语句,即使您没有过早返回。

int bar(int y) {        
    return y*7;
}

因为调用方期待它,并且可能会将返回值分配给如下所示的变量:

int z = bar(4);