Для чего нужны аргументы main()?

Каждый раз, когда я создаю проект (стандартную утилиту командной строки) с Xcode, мой начинается основная функция:

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

Что все это в скобках? Зачем использовать это, а не просто int main()?

Ответ 1

main получает количество аргументов и аргументов, переданных ему при запуске программы, поэтому вы можете получить к нему доступ.

argc содержит количество аргументов, argv содержит указатели на аргументы. argv [argc] всегда является указателем NULL. Обычно аргументы включают имя самой программы.

Обычно, если вы запускаете свою программу, например ./myprogram

  • argc равен 1;
  • argv [0] - строка "./myprogram"
  • argv [1] является указателем NULL

Если вы запустите свою программу, например ./myprogram /tmp/somefile

  • argc равно 2;
  • argv [0] - строка "./myprogram"
  • argv [1] - строка "/tmp/somefile"
  • argv [2] - указатель NULL

Ответ 2

Несмотря на то, что не распространяется на стандарты, на Windows и большинство разновидностей Unix и Linux, main может иметь до трех аргументов:

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

Последний похож на argv (который представляет собой массив строк, как описано в других ответах, с указанием аргументов для программы, переданной в командной строке.)

Но он содержит переменные среды, например. PATH или что-либо еще, что вы установили в своей ОС. Он завершен нулем, поэтому нет необходимости указывать аргумент count.

Ответ 3

Это для использования аргументов из командной строки -

argc содержит количество аргументов в командная строка (включая имя программы) и argv - это список фактические аргументы (представленные как символьные строки).

Ответ 4

Они используются для передачи параметров командной строки.

Например: если вы хотите передать имя файла вашему процессу извне, то

myExe.exe "filename.txt"

командная строка "filename.txt" будет храниться в argv [], а число параметров командной строки (счетчик) будет храниться в argc.

Ответ 5

main() - это функция, которая фактически может принимать максимум три параметра или без параметров. Ниже перечислены параметры, которые может выполнять main(): -

1) int argc: он содержит количество переданных аргументов (из командной строки) во время выполнения программы, или вы можете сказать, что оно используется, чтобы отслеживать количество переменных, переданных во время выполнения программы. Он не может удерживать отрицательное значение. Например. Если вы передадите исполняемый файл "./a.out", то это будет рассматриваться как параметр, и, следовательно, значение argc будет равно 0 i.e передано 1 значение.

2) char * argv []: это массив указателей символов, который содержит адрес строк (массив символов), которые передаются из командной строки во время выполнения программы. Например. в приведенном выше примере, если вы написали argv [argc] i.e argv [0] в cout, то он будет давать. /a.out как вывод.

3) char * envp []: это также массив указателя символа, который используется для хранения адреса переменных среды, используемых в программе. Переменные среды - это набор динамических именованных значений, которые могут влиять на поведение текущего процесса на компьютере. Например, работающий процесс хочет сохранить временные файлы, тогда он вызовет переменные окружения TEMP, чтобы получить подходящее место.