что возвращается;имею в виду? - PullRequest
3 голосов
/ 22 октября 2011

Возвращаемый тип данных функции, чей прототип объявлен в main (), void. Он содержит инструкцию возврата; как в

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

Что он вернет и куда он вернется ??

Ответы [ 4 ]

9 голосов
/ 22 октября 2011

Это ничего не вернет, у вас могут быть операторы return в 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 */
}
3 голосов
/ 22 октября 2011

В этом случае ничего не значит.

возвращение; означает внезапный выход из этой функции, возвращая 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 голосов
/ 22 октября 2011

return; не вернет ничего, что соответствует объявленному void типу возврата функции create.Он вернется к вызывающей функции, в которой он появляется (не показано в вашем примере), точно так же, как будет return EXPRESSION;.

В этом конкретном фрагменте кода return; является избыточным, поскольку он появляется вконец create, но это полезно, если вы хотите преждевременно выйти из функции:

void print_error(char const *errmsg)
{
    if (errmsg == NULL)
        // nothing to print
        return;
    perror(errmsg);
}
1 голос
/ 22 октября 2011

он вернется из выполняемой функции с возвращаемым значением void (что означает отсутствие значения).

...