“return;”是什么意思?

3

一个函数的返回数据类型,在main()中声明其原型为void。它包含一条return;指令,如下:

main()
{
    void create(int *p);
    *some code*
}
void create(node *list)
{
     *some code*
     return;
}

它会返回什么,以及它将在哪里返回?

7
我公司代码库中很多无返回值函数的最后一行都是"return"。有人告诉我这是为了告诉用户我们正在结束函数。好像已经到达函数结尾不足以表示这一点了? - corsiKa
这是否意味着返回任何整数就像结束一个函数一样,而不考虑该整数的值? - user1005284
@glowcoder:更有趣的是,你的同事似乎承认用户(我想是其他开发人员)必须阅读代码才能知道它的作用。 - Fred Foo
@GrajeshBabu,是的,无论返回值的类型或值是什么,只要有一个返回语句,函数的执行就会结束。 - AusCBloke
@GrajeshBabu:dev = 开发人员 - Fred Foo
4个回答

9

这段代码不会返回任何值,但是你可以在无返回值函数中使用return语句来改变函数的流程并退出函数。例如,可以将以下代码:

void do_something(int i)
{
   if (i > 1) {
      /* do something */
   }
   /* otherwise do nothing */
}

你可能会遇到以下问题:

void do_something(int i)
{
   if (i <= 1)
      return;

   /* if haven't returned, do something */
}

3
在这种情况下并没有太大意义。 返回;意味着突然退出此函数并返回void。
int a()
{
    return 10;
}

void b()
{
     return; // we have nothing to return, this is a void function.
}

void c()
{
    // we don't need return; it is optional.
}

对于一个void函数,return语句是无用的,可以省略,是可选的。但有时它是有用的,例如退出循环或开关。

void xxx()
{
    int i = 0;
    while (1)
    {
        if (++i >= 100)
            return; // we exit from the function when we get 100.
    }
}

2

return;不会返回任何东西,这与函数create声明的void返回类型相匹配。它将返回到调用它的函数(在你的示例中未显示),就像return EXPRESSION;一样。

在这段特定的代码中,return;是多余的,因为它出现在create的末尾,但当你想要提前退出函数时,它是有用的:

void print_error(char const *errmsg)
{
    if (errmsg == NULL)
        // nothing to print
        return;
    perror(errmsg);
}

1

执行函数将返回一个void返回值(表示没有值)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接