2016-11-14 7 views
3

Я понимаю, что void не возвращает значений. Итак, как это работает в конъюнктуре с функцией?Зачем использовать void с функцией?

Мое понимание заключается в том, что целью функции является возврат части информации после выполнения чего-то с ней.

так почему бы мне не вернуть значение, и как это будет полезно?

+2

Поскольку вы _don't_ всегда хотите, чтобы вернуть значение. Когда-нибудь вы это делаете, иногда это нецелесообразно. Обратитесь к процедурам и функциям Паскаля (процедуры ничего не возвращают) – enhzflep

+1

Функция возврата функции C/C++ эквивалентна «вызову процедуры» на других языках программирования. – selbie

+0

На самом деле, если вы разобрали (x86/x64) функцию void, я думаю, что она возвращает неиспользованное значение (исправьте меня, если я ошибаюсь). Как упоминалось в @enhzflep, возврат значения иногда не требуется. Таким образом, вы также можете передать параметр по ссылке или указателем и добиться того же результата. – Papipone

ответ

3

Мое понимание заключается в том, что цель функции - вернуть информацию после того, как что-то с ней сделает.

В некоторых (большинстве) языков программирования функции также имеют побочные эффекты. Назначение некоторых функций ограничено только побочными эффектами, а возвращаемое значение не требуется. Такие функции имеют возвращаемый тип void.

Некоторые примеры побочных эффектов могут быть:

  1. Обновление глобальной
  2. Работа с файлами, регистрация и т.д., где пользователь не хочет знать состояние работы
  3. Высвобождение ресурсов
+2

* Каждый * функция в * каждый * реализация языка * имеет * некоторый побочный эффект, по крайней мере, нагрев процессора и/или потерю времени. Важно то, что * полезно * побочные эффекты. –

+0

Спасибо @BasileStarynkevitch за добавление другого измерения. Не могу с тобой согласиться. –

0

C++ Язык программирования Stroustrup Издание 4-го издания

При объявлении функции вы должны указать тип возвращаемого значения. Логически, вы ожидаете, что сможете указать, что функция не вернула значение, опуская тип возврата. Однако это создаст беспорядок грамматики (§iso.A). Следовательно, void используется как «псевдо-возвращаемый тип», чтобы указать, что функция не возвращает значение.

Edit:

Когда вы не ожидаете, что-то в ответ на вызывающую функцию, мы используем void функцию.

If void() does not return a value, why do we use it?

+3

Вопрос не в том, «почему мы точно« void », когда функция не возвращает значение?», Но «Почему мы хотим, чтобы функция не возвращала значение?». –

+0

'Цель функции - вернуть часть информации' - я не очень согласен с этим утверждением. Это противоречит понятиям «пройти по ссылке». –

+1

Это не мой комментарий. Кроме того, этот вопрос обсуждается в комментариях к этому вопросу, и другой ответ решает эту проблему. –