Top.Mail.Ru
Ответы

Что означает void в С++

По дате
По рейтингу
Аватар пользователя
Высший разум
1мес

В C ещё есть аргумент функции void, как тяжкое наследие непродуманного дизайна, которое привело к тому, что функция без аргументов может принимать произвольное количество аргументов любого типа. В данном случае явно указанный void запрещает передавать что либо в качестве аргументов.

1
 void foo(void) {} 

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

Аватар пользователя
Высший разум
1мес

void означает, что функция не возвращает значение.

Если у нас:

123
 int f1() {
  ...
} 

, то функция обязательно возвращает значение типа int мы можем использовать это значение внутри выражения:

1
 x = 2 + f1() * 13; 

Но если у нас:

123
 void f2() { 
  ... 
} 

, то функция НЕ возвращает значения и единственный способ её использования:

1
 f2(); 

отдельным оператором.

Другое использование void - указатель на void:

1
 void *p; 

Это означает, что в переменной p находится просто адрес участка памяти без информации о том, значение какого типа содержится в этой памяти. Этот механизм активно используется в языке C и в низкоуровневом C-подмножестве языка C++. Но в высокоуровневом C++-коде он не нужен.

Аватар пользователя
Оракул
1мес

Отсутствие возвращаемого значения

Аватар пользователя
Гений
1мес

Синтаксис языка обязывает для объявления функций и указателей указывать тип. Самый простой в этих условиях способ указать что функция не должна ничего возвращать а указатель просто служит для хранения адреса - указать некий особый тип. Вот и сделали void таким типом.
И вообще это очень распространенная практика использовать особое число или символ, который означает что там может что-то быть, но там ничего нет)
у вас на счету 0 денег (пора бы вводить такие купюры)
прочерки в разных документах и анкетах
мы открыты с "закрыто" до "закрыто"

Аватар пользователя
Мыслитель
1мес

Пустой тип.
Помимо того, что используется для указания отсутствия возвращаемого значения или отсутствия принимаемых параметов, также например в случае

1
 void * ptr 

показывает, что ptr является указателем на некоторый неизвестный тип.