Void main c что это
Перейти к содержимому

Void main c что это

  • автор:

void (C++)

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

Если тип указателя равен void* , указатель может указывать на любую переменную, которая не объявлена с const помощью или volatile ключевое слово. void* Указатель не может быть разыменован, если только он не приведение к другому типу. void* Указатель можно преобразовать в любой другой тип указателя данных.

В C++ void указатель может указывать на бесплатную функцию (функцию, не являющуюся членом класса), или на статическую функцию-член, но не на нестатическую функцию-член.

Невозможно объявить переменную типа void .

В соответствии с стилем рекомендации по основной версии C++ не используются void для указания пустого списка формальных параметров. Дополнительные сведения см. в руководстве по C++ Core NL.25: не используйте void в качестве типа аргумента.

Пример

// void.cpp void return_nothing() < // A void function can have a return with no argument, // or no return statement. >void vobject; // C2182 void *pv; // okay int *pint; int i; int main() < pv = &i; // Cast is optional in C, required in C++ pint = (int *)pv; >

Функция main и выполнение программ

Каждая программа C имеет основную функцию, которая должна иметь имя main . Функция main служит отправной точкой для выполнения программы. Она обычно управляет выполнением программы, вызывая другие ее функции.

К функции применяется несколько ограничений main , которые не применяются к другим функциям C. Функция main :

  • Не может быть объявлен как inline .
  • Не может быть объявлен как static .
  • Не может быть принято его адрес.
  • Не удается вызвать из программы.

Сигнатура main функции

Функция main не имеет объявления, так как она встроена в язык. Если это так, синтаксис объявления для main будет выглядеть следующим образом:

int main( void ); int main( int argc, char *argv[ ] ); int main( int argc, char *argv[ ], char *envp[ ] ); 

Функция main объявляется неявно с помощью одной из этих сигнатур. При определении main функции можно использовать любую из этих сигнатур. Компилятор Майкрософт также позволяет main иметь тип возвращаемого void значения, если значение не возвращается. Параметры argv и envp можно wmain также определить как тип char** . Дополнительные сведения о аргументах см. в разделе Описание аргумента.

Примечания

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

Можно объявить любую функцию, включая main , для получения параметров. Термин «параметр» или «формальный параметр» относится к идентификатору, получающему значение, передаваемое функции. Сведения о передаче аргументов в качестве параметров вы найдете в статье Параметры. Когда одна функция вызывает другую, вызываемая функция получает значения своих параметров от вызывающей функции. Эти значения называются аргументами. Можно объявить формальные параметры в , main чтобы получать аргументы из командной строки в формате, показанном в сигнатуре функции.

Если вы хотите передать сведения в функцию main , параметры обычно называются argc и argv , хотя компилятор C не требует этих имен. Как правило, если третий параметр передается в main , этот параметр называется envp . Типы для argc , argv и envp определяются языком C. Можно также объявить argv как char** argv и envp как char** envp . В приведенных ниже в данном разделе примерах описывается использование этих трех параметров для доступа к аргументам командной строки. Эти параметры объясняются в следующих разделах.

Если ваш код соответствует модели программирования в Юникоде, в качестве точки входа в программу можно использовать версию расширенных символов main wmain майкрософт , . Дополнительные сведения об этой версии с расширенными символами main см. в разделе Использование wmain .

main Прекращения

Программа обычно прекращает выполнение, когда она возвращается из или достигает конца main , хотя она может завершиться в других точках программы по различным причинам. Например, может потребоваться принудительное завершение программы при обнаружении некоторого состояния ошибки. Для этого можно использовать функцию exit . Дополнительные сведения и exit пример использования см. в разделе exit .

PragmaSpot

— информационная безопасность, программирование, железо.

Страницы

суббота, 31 декабря 2011 г.

Большая разница: int main() или void main()?

Функция main() обязательна для простых консольных приложений, которые мы разрабатываем в Академии в качестве множества примеров и заданий. Однако как оказалось существует существенная разница в ее употреблении. Ее могут записывать по-разному: int main() и void main().
Однако запись приведенная выше не будет корректна без записи return 0 для int main() и exit(0) для void main(). На одном из форумов встретил сообщение, что void mai() не совсем корректная запись, так как сообщает компилятору, что функция main() не возвращает никакого значения. При этом запись int main() сообщает компилятору о возвращении целочисленного значения, которое необходимо операционной системе. Это сообщение объявляет ей о том, что программа завершилась корректно. Если же это значение не возвращено, то операционная система понимает, что программа завершилась в аварийном режиме. Именно поэтому как первая запись, так и вторая требует записи операторов return 0 для int main() или для void main() – записи оператора exit(0).
Однако в языке С++ предпочтение при записи функции отдается целочисленному значению, что выглядит вот так:
int main()
return 0;
>

Чем отличается в c++ int main() от void main().

Т. е. точка выхода.
Можно ее пропустить, конечно, тогда компилятор автоматически добавит return 0; в конец программы.
Это значение передается вызывающему процессу (например, операционной системе) чтобы он «понял», что программа завершена корректно.

Второй вариант:
void main()

по завершении программы ничего не возвращает, что может привести к различным проблемам.
Это можно обойти с помощью функции exit();

Но тем не менее, запись void main() не соответствует стандарту и считается некорректной, и некоторые компиляторы ее не принимают.

Остальные ответы
Второй вариант формально не является правильным и его скомпилирует не каждый компилятор.

Первый вариант может возвращать код ошибки.
Второй вариант не может возвращать код ошибки.
Первый вариант будет компилироваться в любом нормальном компиляторе.
Второй вариант будет редко где компилироваться.

void это функция которая не возвращает значений, а int это целочисленная функция и она возвращает значение то есть return

Не слушайте быдлокодеров. Когда вы пишете Int — вы указываете компьютеру, что вы резервируете место в его памяти, куда функция вернет число в диапазоне от (примерно) минус двух миллиардов до плюс двух миллиардов. Вы часто в жизни с двумя миллиардами что-то считаете? Я вот тоже не часто. Всегда используйте наименьший тип данных, который позволяет использовать задача, тем самым вы рационально используете ресурсы компьютера. А то программисту нужны в программе числа в районе нескольких тысяч, а он в нее эти инты понапихал, и куча памяти просто занята, хотя и не используется.
Когда вы указываете тип возвращаемого значения void, это значит, что вы возвращаете НИЧЕГО. ПУСТОТУ. Вы указываете компьютеру, что ничего в памяти не резервируете. Так же вы в конце main пишете просто return — выйти из функции. Упаси вас бог думать, что функция main по умолчанию что-то там в память записывает, нули всякие, нет, она просто по окончании своей работы дает системе знать, что все, программа завершена. Или передает управление командой строке, если вы работаете в консоли.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *