Урок №29. Тип данных void
Тип void — это самый простой тип данных, который означает «отсутствие любого типа данных». Следовательно, переменные не могут быть типа void:
Тип void, как правило, используется в трех случаях:
Использование №1: Указать, что функция не возвращает значение:
Использование №2: Указать, что функция не имеет никаких параметров (перешло из языка Cи):
Указание типа void как «никаких параметров» является пережитком, сохранившимся еще со времен языка Cи. Следующий код равнозначен и более предпочтителен для использования в языке C++:
Правило: Используйте пустой список параметров вместо void для указания отсутствия параметров в функции.
Использование №3: Ключевое слово void имеет третий (более продвинутый) способ использования в языке C++, который мы будем рассматривать на уроке №92.
Поделиться в социальных сетях:
Урок №28. Инициализация, присваивание и объявление переменных
Комментариев: 5
Ключевое слово void имеет третий более продвинутый.
Этот void какой то эпический, уже 2й раз читаю что о нем мы узнаем дальше))) Мне кажется это пасхалка какая-то))
Если все-таки разделять понятия "процедура" и "функция" (понимаю, что в C понятие "процедура" отсутствует), то void станет более понятным.
Процедура — это просто последовательность действий.
Функция — это как бы "ответ на вопрос".
"Отсортируй переданный в параметрах массив" — процедура (void).
"Что получится, если перемножить переданные параметры?" — функция.
Не могу понять, что такое VOID в С++?
-
в функциях: в качестве возвращаемого значения:
- Вконтакте


- Вконтакте
- Вконтакте




- Вконтакте

- Вконтакте



- Вконтакте
Влад Конвой Все просто. Из курса Computer science. Рекомендую почитать SICP.
В математике На вопрос «Как это выглядит?» отвечает «функция». А на вопрос «Как же это получить?» отвечает «процедура».
В С-подобных языках именованные вычисления оформляются в виде функций. Но функции в С-подобных языках отвечают на оба вопроса и нет ни одного способа разграничить. Функция в С-подобных всегда должна что-то вернуть! Какой-то результат! Какой-то новый объект. Но что-то новая вернуть по-любому должна!
Теперь, а как же быть если хочется хоть как-то разграничить на функции и процедуры? Вот для этого есть «костыль» в виде ‘void’! Другими словами это способ сказать читающему код: «мы ничего не возвращаем, мы только создаем». Это и есть «как это получить?» в таких функциях только производство чего-то нового. Нарисовать окно, зашифровать диск, послать другу . А в в функциях возвращающих результат можно уже написать в терминах математики, то есть как что выглядит, но ни как что получается 😉
что происходит с возвращаемой функции в void функции
![]()
Ничего. Если компилятор без оптимизатора — ну, какой-то код суммирования создаст, результат — в помойку, ну, а если компилятор поумнее — то и этого не будет.
В общем случае: возвращаемое значение просто не используется, вот и все.
![]()
Там ничего не происходит. И ничего это не даст. Функции, которые возвращают void, то есть не возвращают просто выполняют свой функционал, описанный в виде операторов: присваивают значения переменным, выводят текст, считывают ввод и т.д.
Во-вторых, если вы просто так вызовите функцию, которая что-то возвращает, то она выполнится, даже куда-нибудь что-нибудь выведет, если в ней есть фукнция cout, НО свое значение, которая она вернула никуда она не запишет. Поэтмому функции, которые возвращают значение обычно пишут так:
ИЛи другой тип данных.
При вызове фукнции, которая возвращает значение, значение, которое она возращает ПОДСТАВЛЯЕТСЯ ВМЕСТО ВЫЗОВА ФУНКЦИИ. Например:
Выведет HELLO, так как 3 больше, чем 0 (эта фукнция проверяет, больше ли число, чем 0), значит значение true подставится вместо вызова функции и мы получим это:
В вашем случае это значение, которое подставится вместо sum(a, b) ничего не будет значить, так как с ним вы ничего не делаете: не используете в цикле, не проверяете в условии, не присваиваете в переменную и т.д.
А вот методы void для того и нужны, чтобы вызывать их просто так: они выполнят ссвой функционал и движение по коду продолжится дальше.