Что такое int main в c
Перейти к содержимому

Что такое int main в c

  • автор:

Main в СИ-семействе

Main – функция, которая известна каждому разработчику. Программисты, пишущие на C и C++, постоянно сталкиваются с ней. Без соответствующей записи исходный код проекта не сможет нормально функционировать.

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

Определение

Функция Main – ключевая «команда» проектов, написанных на языках СИ-семейства. Такое название получила «минимальная программа». Она не будет принимать в процессе работы совершенно никаких аргументов.

Выступает в качестве глобальной функции. Обозначает назначенный запуск проекта в той или иной среде. Имеет такую форму записи:

В фигурных скобках указывается начало, а также конец функции main в C. Вне необходимые команды и операции размещаются в соответствующей области. Это – тело of the int function. До рассматриваемой функции, в самом начале исходного кода, обычно прописываются только директивы #include.

В соответствующей записи допускается указание комментариев. Для этого внутри фигурных скобок требуется поставить двойной слеш («//»), а затем произвести желаемую запись к той или иной строке. Они не будут непосредственно обрабатываться компилятором и выступают в качестве своеобразных помощников разработчика – подсказок.

Каждое приложение, написанное на C++, имеет в составе функцию main. Она указывает на начало программы. Возвращает результат своей реализации. На это ссылает тип данных int (integers – целочисленные значения). Соответствующий компонент пишется перед рассматриваемой function.

При правильном (корректном) завершении работы программного обеспечения система вернет значение 0. Если в процессе функционирования возникают ошибки, проект сообщит об этом. Параметры, полученные через Main в C, могут использоваться разработчиком и операционными системами. Они пригодятся при обработке некоторых служебных задач.

Что входит в состав

Изучаемый элемент указывает на непосредственное начало функционирования исходного кода готового проекта. Включает в себя несколько частей:

  1. Тип данных. Он будет помечен в Main C как int. Указывает на то, что в виде аргумента система возвращает целое число.
  2. Непосредственное описание. Оно помечается ключевым словом функции – main().

Рассматриваемый компонент является наиболее важным. Если он отсутствует, компилятор не сможет «собрать» приложение и выдать его на проверку. Система просто не поймет, где начинается непосредственная работа продукта.

Стоит обратить на инициализацию глобальных объектов. Без функции main сделать это нельзя. То же самое касается functions, которые включены в стандартные библиотеки языков СИ-семейств.

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

Нюансы и особенности

При использовании функции main в СИ-семействе требуется запомнить несколько ее особенностей:

  • она используется для инициализации функций и методов разработчиков, а также из стандартных библиотек;
  • не может быть статической;
  • не предусматривает возможность перегрузки;
  • не используется для создания адресов;
  • к ней нельзя обратиться непосредственно из той или иной части программного продукта.

Main в C и С++ выступает в виде стартера-регулировщика. Это значит, что в исходном коде команда будет выполнять поставленную (определенную) задачу. В качестве примеров можно привести следующие ситуации:

  • обращение к разнообразным операциям для решения возникающих проблем;
  • передача управления исходным кодом иным имеющимся алгоритмам;
  • принятие управления программой при завершении конкретной задачи.

Самый простой пример приложения с рассматриваемой операцией – это вывод текста «Hello, World!» на экране (в консоль).

Пример

Чтобы лучше понимать принципы работы функции main, необходимо сначала рассмотреть наглядный пример приложения с ней. В качестве «базы» допускается использование совершенно любого проекта. Новичкам проще будет разобраться с самым распространенным примером – выводом на экран записи «Hello, World!»:

Работает соответствующий программный код следующим образом:

  1. Директива include указывает компилятору на то, что нужно подключить заголовочный файл. Его компоненты (int argc) будут использоваться в исходном коде далее.
  2. Iostream – это стандартная библиотека C и C++. Используется для ввода-вывода информации из STL.
  3. Std – именное пространство, которое поддерживает в себе оператор вывода count. Соответствующие пространства в C++ используются для устранения конфликтов имен между проектом разработчика и библиотеками с одними и теми же наименованиями.
  4. Count – команда, которая отвечает за непосредственный вывод данных. Применяется для того, чтобы ускорить процесс работы и избавить программиста от необходимости прописывания каждого алгоритма для выведения текстовых сведений на консоль.

При создании программного кода требуется помнить – Main в C может иметь несколько способов представления. Один из них уже рассмотрен. Он является «классическим». Также изучаемый компонент может быть реализован посредством такой записи:

Здесь argc – это количество переданных аргументов, а argv – массив указателей на используемые «параметры» (аргументы).

В разработке программного обеспечения иногда можно встретить записи функции main с void. Они являются ошибочными. Такие записи в отдельно взятых компиляторах нередко обрабатываются без предварительных предупреждений и сообщений о том, что «что-то написано не так». Программисты, особенно новички, рискуют пропустить соответствующие ошибки на первых порах погружения в разработку программного обеспечения.

P. S. Интересует разработка? Обратите внимание на курс «Программист C» . Также в Otus доступно множество других современных курсов.

Что такое int main в c

В прошлых темах функция main определялась без параметров. Однако также можно определить данную функцию с параметрами:

int main(int argc, char* argv[]) < // инструкции >

Первый параметр, argc , представляет тип int и хранит количество аргументов командной строки. Второй параметр, argv[] , представляет собой массив указателей и хранит все переданные аргументы командной строки в виде строк. Таким образом, благодаря данным параметрам мы можем при вызове программы в консоли передать ей некоторые данные.

Например, определим следующую программу:

#include int main(int argc, char* argv[]) < // выводим все переданные аргументы в цикле for (int i <>; i < argc; ++i) < std::cout >

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

c:\cpp>g++ hello.cpp -o hello & hello hello

В моем случае код программы расположен в файле «hello.cpp» и компилируется в файл с именем hello. После запуска программы, даже если мы не передаем ей никакх аргументов, в массиве argv[] будет как минимум один элемент — название файла программы. То есть в моем случае в массиве будет одна строка «hello». А первый параметр, argc , будет равен 1.

Передадим программе какие-нибудь аргументы

c:\cpp>g++ hello.cpp -o hello & hello Tom 38 hello Tom 38

Здесь программе при запуске передается два значения — «Tom» и «38». Передаваемые аргументы разделяются пробелом. Причем даже если передается число (как в случае с вторым аргументом), то программа все равно получает его в виде строки. Соответственно теперь в массиве argv будет три элемента.

Что делает код int main()<[]()<>();>

Правильный ответ: ничего не делает.

А означает он следующее:

int main() // Функция main без аргументов. < [] // Объявление лямбда-функции без списка захвата. () // . с пустым списком аргументов . <>// . и пустым телом, . (); // . которая тут же вызывается. > 

Отслеживать
Вторые скобки означают вызов?
23 дек 2015 в 8:13
@Ivan43 Да. Вторые круглые скобки означают вызов.
– user194374
23 дек 2015 в 8:13
Да, это анонимная функция и вторые скобки означают ее вызов: stackoverflow.com/questions/12662688/…
23 дек 2015 в 8:13

Данная программа просто возвращает 0 в вызывающую программу. Находящийся в теле программы вызов лямбда-выражения может быть проигнорирован, то есть для него не будет сгенерировано никакого объектного кода, так как это выражение не имеет побочных эффектов.

Поэтому программа не имеет смысла.

Отслеживать
ответ дан 23 дек 2015 в 8:20
Vlad from Moscow Vlad from Moscow
44.8k 3 3 золотых знака 38 38 серебряных знаков 89 89 бронзовых знаков

@NickVolynkin Лямбда не имеет возвращаемого значения ( void ), main в соответствии со стандартом при отсутствии return вернёт ноль. Компилятор может проигнорировать, т.е. «выкинуть» код, не имеющий эффекта.

– user194374
23 дек 2015 в 9:15

@alexolut Объектный код не имеет никакого отношения к стандарту C. Главное — чтобы результат программы соответствовал результату, который был бы получен абстрактной машиной.

23 дек 2015 в 9:20
@VladfromMoscow вот я прошу сноску на Стандарт.
23 дек 2015 в 9:21

@alexolut Вот вам соответствующая цитата: «1.9 Program execution [intro.execution] 1 The semantic descriptions in this International Standard define a parameterized nondeterministic abstract machine. This International Standard places no requirement on the structure of conforming implementations. In particular, they need not copy or emulate the structure of the abstract machine. Rather, conforming implementations are required to emulate (only) the observable behavior of the abstract machine as explained below.5»

23 дек 2015 в 9:24

@VladfromMoscow спасибо. Более понятно, имхо, по сноске написано: an actual implementation need not evaluate part of an expression if it can deduce that its value is not used and that no side effects affecting the observable behavior of the program are produced.

Аргументы функции main()

В языке C заданы два встроенных аргумента функции main: argc и argv.

Выглядит это так:

int main(int argc, char *argv[])

Аргумент argc типа integer содержит в себе количество аргументов командной строки.

Аргумент argv типа char — указатель на массив строк. Каждый элемент массива указывает на аргументы командной строки. Один параметр отделяется от другого пробелами.

  • argv[0] — полное имя запущенной программы
  • argv[1] — первая строка записаная после имени программы
  • argv[2] — вторая строка записаная после имени программы
  • argv[argc-1] — последняя строка записаная после имени программы
  • argv[argc] — NULL

В средах разработки фирмы Borland (Borland Builder C++, Borland C++ и т.п.) предусмотрен еще и третий аргумент env, который, так же как и argv является указателем на массив строк, но содержит установки среды:

int main(int argc, char *argv[], char *env[])

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

#include «stdio.h» #include «stdlib.h» int main(int argc, char *argv[], char *env[])

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

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