Что означает int argc, char *argv []?

во многих C++ IDE и компиляторах, когда он генерирует основную функцию для вас, это выглядит так:

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

когда я кодирую C++ без IDE, только с компилятором командной строки, я набираю:

int main()

без каких-либо параметров. Что это значит и имеет ли это жизненно важное значение для моей программы?

8 ответов


argv и argc как аргументы командной строки передаются main() в C и C++.

argc будет количество строк, на которое указывает argv. Это будет (на практике) 1 плюс количество аргументов, так как практически все реализации будут добавлять имя программы к массиву.

переменные названы argc (


argc количество аргументов, передаваемых в вашу программу из командной строки и argv - это массив аргументов.

вы можете перебирать аргументы, зная их количество, например:

for(int i = 0; i < argc; i++)
{
    // argv[i] is the argument at index i
}

Предположим, вы запускаете свою программу таким образом (используя sh синтаксис):

myprog arg1 arg2 'arg 3'

если вы объявили свой основной как int main(int argc, char *argv[]), затем (в большинстве сред), ваш main() будет называться, если так:

p = { "myprog", "arg1", "arg2", "arg 3", NULL };
exit(main(4, p));

однако, если вы объявили свой основной как int main(), это будет называться что-то вроде

exit(main());

и вы не получите аргументы.

две дополнительные вещи, чтобы отметить:

  1. это только два стандартные обязательные подписи для main. Если конкретная платформа принимает дополнительные аргументы или другой тип возврата, то это расширение и не следует полагаться на портативную программу.
  2. *argv[] и **argv точно эквивалентны, поэтому вы можете написать int main(int argc, char *argv[]) as int main(int argc, char **argv).

параметры main представляют параметры командной строки, предоставленные программе при ее запуске. The argc параметр представляет количество аргументов командной строки и char *argv[] представляет собой массив строк (символьных указателей), представляющих отдельные аргументы, указанные в командной строке.


первый параметр-это количество предоставленных аргументов, а второй параметр-список строк, представляющих эти аргументы.


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

имя программы всегда является первым аргументом, поэтому в программе будет хотя бы один аргумент и минимальное значение argc будет один. Но если у программы есть два аргумента, значение argc будет три.

параметр argv указывает на строковый массив и называется векторного аргумента. Это одномерный строковый массив аргументов функции.


int main();

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

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

данное заявление используется, когда ваша программа должна принимать аргументы командной строки. Когда бегут такие:

myprogram arg1 arg2 arg3

argc, или количество аргументов, будет установлено в 4 (четыре аргумента) и argv, или векторы аргументов, будут заполнены строковыми указателями на "myprogram", "arg1", "arg2"и " arg3". вызов программы (myprogram) включен в аргументы!

кроме того, вы можете использовать:

int main(int argc, char** argv);

это тоже действует.

есть еще один параметр, который можно добавить:

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

на


и

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

являются юридическими определениями точки входа для программы на C или c++. Stroustrup: C++ стиль и техника FAQ подробнее некоторые из вариантов, которые являются возможными или законными для вашей основной функции.