int main(int argc, char* argv[])
那main函数的argc和argv参数是什么意思呢?
这两个参数主要是用来保存程序运行时传递给main函数的命令行参数的。
argc:是argument count 的缩写,保存运行时传递给main函数的参数个数。
argv:是argument vector 的缩写,保存运行时传递main函数的参数,类型是一个字符指针数组,每个元素是一个字符指针,指向一个命令行参数。
argv[0]指向程序运行时的全路径名;
argv[1] 指向程序在命令行中执行程序名后的第一个字符串;
argv[2] 指向程序在命令行中执行程序名后的第二个字符串;
以此类推直到argv[argc]…
argv[argc] 在C++中指向nullptr,在C语言中指向NULL。
由于main函数不能被其他函数调用,因此不可能在程序内部取得实际值。main函数的参数值是从操作系统命令行上获取的。在window系统中,假如编译链接成的可执行文件为my_project.exe,则在命令提示符(快捷键windows+R,输入cmd)中,键入如下命令(可执行文件 参数 参数 参数 …):
my_project.exe jisongxie 1996
将会传递三个参数给main函数,第一个argv[0]是前面提到的文件名,第二个argv[1]是"jisongxie",第三个argv[2]是“1996”。同理,可以传入更多的参数。在ubuntu系统中,可以通过终端进行相同的操作。
举个例子:输入如下程序
#include <iostream>
using std::cout;
using std::endl;
int main(int argc, char *argv[])
{
cout << "参数个数=" << argc << endl;
for (int i = 0; i<argc; i++)
{
cout << "参数序号=" << i << " ";
cout << "参数值=" << argv[i] << endl;
}
//cout << argv[argc] << endl;
system("pause");
return 0;
}