main()函数中arg和argv参数的作用

 

参考文章

前言

今天在看一些代码的时候偶然看到自己刚开始学C的时候,main()函数中都会有一个(int argc,char* argv[],char **env)的传参。但是到现在依旧不理解这几个参数的意义和它们代表的作用,在稍微查阅了一下以后,浅显的总结一下。

具体意义

如果要使用argcargv的话(char **env暂时没遇到,不做记录),只需要在main函数当中添加这两个参数即可,大致参考写法类似如下:

int main(int argc, char** argv)
{
	...
	return 0;
}

解释

argc是一个整形的参数,代表了程序运行的时候发送给main()函数的参数个数。

argv则是一个字符串的数组,用来指向存放对应参数的字符串。

其中,argv[]数组中的元素有argc个,并且有:

  • argv[0]包含的是程序运行的路径名字
  • argv[1]包含的是程序命名后的第一个字符串
  • argv[2]包含的是程序命名后的第二个字符串
  • ….
  • argv[argc]为NULL

演示方法

为让以上解释更加形象,这里引入示例代码进行解释:

#include<iostream>
using namespace std;

int main(int argc, char* argv[])
{
	for(int i = 0; i < argc; i++)
	{
		cout<<"Argument"<<i<<" is "<<argv[i]<<endl;
	}
	return 0;
}

假设代码文件存放于./b.cpp文件当中,通过编译器编译后的可执行文件为b。在执行如下指令:

$ ./b

返回的内容为:

Argument0 is ./b

在执行如下指令:

$ ./b oneString twoString threeString

返回的内容为:

Argument0 is ./b
Argument1 is oneString
Argument2 is twoString
Argument3 is threeString

对应了上文中的argc的元素个数和argv的字符串内容,即./b后面的oneStringtwoStringthreeString