Функция main()
Программа должна иметь глобальную функцию main — точку старта программы.
int main () { body }
|
(1) | ||||||||
int main (int argc, char *argv[]) { body }
|
(2) | ||||||||
int main (int argc, char *argv[] , other_parameters ) { body }
|
(3) | ||||||||
| argc | — | Неотрицательное число — количество аргументов, переданных программе из окружения, в котором запустили программу. |
| argv | — | Указатель на первый элемент массива указателей на многобайтовые строки с завершающим нулем, аргументы, переданных программе из окружения, в котором запустили программу (с argv[0] по argv[argc-1]). Гарантируется, что последний элемент массива argv[argc] — нулевой указатель 0. |
| body | — | Тело функции main. |
| other_parameters | — | Различные реализации допускают дополнительные формы функции main, но при этом возвращаемый тип всегда int. Наиболее часто третьим аргументом передают массив char*[] указателей на значения переменных окружения.
|
Имена argc и argv могут быть произвольными, так же как и запись типов этих параметров: int main(int ac, char** av) так же допустимо.
[править] Объяснение
Функция main вызывается при старте программы после инициализации нелокальных объектов со статической длительностью хранения. Это точка входа в программу, которая исполняется в гостевом окружении (то есть с операционной системой). Точки входа в автономные программы (boot loaders, OS kernels, и т.п.) зависят от реализации.
Параметры функции main в варианте с двумя параметрами позволяют передать произвольные многобайтовые строки из окружения выполнения (обычно это аргументы командной строки), указатели argv[1] .. argv[argc-1] ссылаются на первые символы этих строк. argv[0] — указатель на первый символ многобабайтовой строки с завершающим нулём, которая содержит имя, используемое при вызове программы (или пустую строку "", если это не поддерживается в окружении выполнения). Эти строки изменяемые, хотя их изменения не распространяются назад в окружение выполнения: они могут использоваться, например, в std::strtok. Размер массива, на который указывает argv, равен по меньшей мере argc+1, и последний элемент массива argv[argc] гарантированно является null-указателем.
Функция main обладает следующими специальными свойствами:
main зарезервировано в глобальном пространстве имён для функций (хотя это имя может быть использовано для именования классов, пространства имён, перечислений и любых сущностей не в глобальных пространствах имён, за исключением того, что функция с именем 'main' не может быть объявлена со связыванием для языка C в любом пространстве имён (начиная с C++17)).main без оператора return эффект будет тот же самый, как при выполнении return 0;.[править] Примечания
То, как аргументы, приведенные в командной строке ОС, преобразуются в массивы многобайтовых строк, на которые ссылается argv, определяется реализацией обработки командной строки:
[править] Смотрите также
| Справка по C — Функция main
|

