对int main(int argc,char **argv)的理解

运行带参数的ROS节点时,发现命令行参数对应于int main(int argc,char **argv)中的参数,因此对main函数中的两个参数做了简单的研究。

下面的博文源于如下链接
https://www.cnblogs.com/ruixingw/p/3705918.html

argc是命令行总的参数个数
argv[]为保存命令行参数的字符串指针,其中第0个参数是程序的全名,以后的参数为命令行后面跟的用户输入的参数,argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。 指针数组的长度即为参数个数argc。数组元素初值由系统自动赋予。比如:
int main(int argc, char* argv[])
{
int i;
for (i = 0; i< argc; i++)
cout<< argv[i]<< endl;
cin>>i;
return 0;
}
执行时敲入
F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE aaaa bbb ccc ddd
输出如下:
F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE
aaaa
bbb
ccc
ddd


char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数 argv[] 参数,数组里每个元素代表一个参数;
比如你输入
test a.c b.c t.c

argc = 4

argv[0] = “test”
argv[1] = “a.c”
argv[2] = “b.c”
argv[3] = “t.c”


argc记录了用户在运行程序的命令行中输入的参数的个数。
arg[]指向的数组中至少有一个字符指针,即arg[0].他通常指向程序中的可执行文件的文件名。在有些版本的编译器中还包括程序
文件所在的路径。


猜你喜欢

转载自blog.csdn.net/bbtang5568/article/details/82528526