What does int argc, char *argv[] mean?
argv和argc是命令行参数在C和c++中传递给main()的方式。
argc是argv指向的字符串数。(在实践中,这将是1加上参数的数量,因为几乎所有的实现都将把程序名前置到数组中。)
按照惯例,这些变量被命名为argc(参数计数)和argv(参数向量),但是可以给它们任何有效的标识符
int main(int num_args, char** arg_strings)
同样是有效的。
如果不打算处理命令行参数,也可以完全忽略它们,生成int main()。
int main()
试着运行下面的代码:
#include <iostream>
int main(int argc, char **argv)
{
std::cout << "Have " << argc << " arguments:" << std::endl;
for (int i = 0; i < argc; ++i)
{
std::cout << argv[i] << endl;
}
}
运行时伴随内容 将会输出:
Have 4 arguments:
./test
a1
b2
c3
What does int main(argc, char **argv) mean?
它需要一个整数参数和一个指向char数组的指针,有时大家会使用双指针指向一个多维数组,至少我看到它是这样使用的。
因此argv是一个指向字符的指针数组,而argc是该指针数组中的元素数。
C++中,比较常见的是不带参数的主函数int main(),如果使用命令行执行程序,主函数也可以接收预先输入的参数,形式如下。
- int main(int argc,char **argv)
- argc:命令行参数个数(Argument Count)
- argv:命令行参数向量(Argument Vector)
例如,我们在命令行输入Project.exe string1 string2 string3时,argc=4,表示输入的参数个数是4,分别是Project.exe、string1、string2、string3。
argv是一个字符串数组,对应存储这4个字符串,
即argv[0] = "Project.exe", argv[1] = "string1", argv[2] = "string2", argv[3] = "string3"。
注意:int main(int argc,char **argv)也可以写成int main(int argc, char *argv[])
因此可以在主函数中,后续通过argc和argv获取参数信息。
这道题在牛客上的体现。