Как работают argc и argv

Рейтинг: 5Ответов: 3Опубликовано: 14.03.2011

Расскажите, пожалуйста, о принципе работы аргументов argc и argv в C/C++.

Ответы

▲ 6Принят

Первая типа int хранит количество передаваемых параметров, один из параметров - это обязательно имя программы (абсолютный путь), далее уже могут быть ваши параметры, если это ваша программа.

argv - это обычно массив char, но сейчас уже _TCHAR, причем указателей, но _TCHAR обычно в IDE стоит как char, там уже имена переданных параметров, один - это программа, а остальные - это уже их порядок.

Пример:

hello.exe -param1 -param2

argc = 3    
argv[0] = hello.exe
argv[1] = -param1
argv[2] = -param2

Вот я только с путем подзабыл. Если что, книга есть "Пахомов Visual C\C++ 2010", я там такое вычитывал.

▲ 9
  • argv - это массив указателей на нуль-терминированные строки, содержащие параметры командной строки, с которыми вызывалась ваша программа.

  • Если argc больше нуля, то argv[0] содержит указатель на имя вашей программы. В каком виде это имя представлено - зависит от реализации. Если имя программы не предоставляется, argv[0] будет указывать на пустую строку (т.е. не может быть нулевым указателем).

  • Если argc больше единицы, то элементы argv[1]...argv[argc - 1] содержат указатели на параметры командной строки.

  • Размер этого массива - argc + 1 (а не argc, как часто ошибочно полагают). При этом гарантируется, что argv[argc] содержит нулевой указатель. Таким образом для того, чтобы найти конец массива argv, вы можете как пользоваться значением argc, так и просто просматривать массив argv до встречи с первым нулевым указателем.

  • В языке С разрешается модифицировать как элементы массива argv, так и сами строки, указуемые элементами массива argv (разумеется, в пределах исходной длины строки). В языке С++ такого разрешения явным образом не дается.

▲ 3
  • argc - 1 равно количеству аргументов, переданных программе в командной строке.
  • argv[1] ... argv[argc - 1] - сами аргументы.
  • argv[0] - имя программы, как ввели его в командной строке.