Что означает 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());
и вы не получите аргументы.
две дополнительные вещи, чтобы отметить:
- это только два стандартные обязательные подписи для
main
. Если конкретная платформа принимает дополнительные аргументы или другой тип возврата, то это расширение и не следует полагаться на портативную программу. -
*argv[]
и**argv
точно эквивалентны, поэтому вы можете написатьint main(int argc, char *argv[])
asint 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 подробнее некоторые из вариантов, которые являются возможными или законными для вашей основной функции.