什么回报;意思?

时间:2011-10-21 22:04:51

标签: c function prototype return-type

函数的返回数据类型,其原型在main()中声明,是无效的。 它结合了指令回报;如在

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

它将返回什么,它将返回哪里?

4 个答案:

答案 0 :(得分:9)

它不会返回任何内容,您可能在void函数中返回语句以改变流并退出函数。即而不是:

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 */
}

答案 1 :(得分: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函数没有用,可以省略,是可选的。 但是有时它会很有用,例如退出循环或开关。

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

答案 2 :(得分:2)

return;不会返回任何与函数void的声明的create返回类型匹配的内容。它将返回其出现的函数的调用者(在您的示例中未显示),就像return EXPRESSION;一样。

在这段特殊代码中,return;是多余的,因为它出现在create的最后,但是当你想要提前退出某个函数时它很有用:

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

答案 3 :(得分:1)

它将从执行函数返回void返回值(这意味着没有值)。