В прошлых темах функция main определялась без параметров. Однако также можно определить данную функцию с параметрами:
int main(int argc, char* argv[]) { // инструкции }
Первый параметр, argc, представляет тип int
и хранит количество аргументов командной строки.
Второй параметр, argv[], представляет собой массив указателей и хранит все переданные аргументы командной строки в виде строк. Таким образом,
благодаря данным параметрам мы можем при вызове программы в консоли передать ей некоторые данные.
Например, определим следующую программу:
#include <iostream> int main(int argc, char* argv[]) { // выводим все переданные аргументы в цикле for (int i {}; i < argc; ++i) { std::cout << argv[i] << std::endl; } }
В данном случае просто выводим все аргументы командной строки на консоль. Скомпилируем и просто запустим программу, не передавая ей никаких аргументов:
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 будет три элемента.