在命令行运行c++代码时,可以在程序名之后跟上一些参数,下面就是一个案例:
./AA-SIPP-m task_file_name.xml map_file_name.xml config_file_name.xml obstacles_file_name.xml
./AA-SIPP-m
是要运行的c++代码- 以空格分隔开的
task_file_name.xml
、map_file_name.xml
、config_file_name.xml
、obstacles_file_name.xml
是要输入的参数。
这些参数在代码中是如何处理的呢?答案在main
函数的编写中,带有参数输入的c++代码一般有如下的main
函数:
int main(int argc,char *argv[])// 或 int main(int argc,char **argv);
输入的参数会被赋值给argc
和argv
。
argc
:是argument count 的缩写,保存运行时传递给main函数的参数个数。argv
:是argument vector 的缩写,保存运行时传递main函数的参数,类型是一个字符指针数组,每个元素是一个字符指针,指向一个命令行参数。
argv[0]指向程序运行时的全路径名;
argv[1] 指向程序在命令行中执行程序名后的第一个字符串;
argv[2] 指向程序在命令行中执行程序名后的第二个字符串;
以此类推直到argv[argc]…
argv[argc] 在C++中指向nullptr,在C语言中指向NULL。