main函数中的参数 argc 和 argv 的含义和用处

  • Post author:
  • Post category:其他




一、main() 函数参数简要说明

通常情况下,小伙伴们在写主函数时,都是

void main()

或者是

int main() {…return 0;}

但是

ANSI-C

(美国国家标准协会,

C

的第一个标准

ANSI

发布)在

C89

/

C99

中说明

main()

函数主要形式为:


(1)  int main(void)



(2)  int main(int argc,char *argv[ ]) = int main(int argc,char **argv)

其中参数

argc



argv

用于运行时,把命令行参数传入主程序。

其中

arg

是指

arguments

,即参数。具体含义如下:(参考自 Arguments to main 和C++ Primer 7.2.6)


(1)  int argc

:英文名为

arguments count

(参数计数):表示传入

main

函数的参数个数;


count of cmd line args

(命令行参数 ),运行程序传送给

main

函数的命令行参数总个数,包括可执行程序名,其中当

argc=1

时表示只有一个程序名称,此时存储在

argv[0]

中。


(2)  char **argv

:英文名为

arguments value/vector

(参数值):表示传入

main

函数的参数序列或指针,并且第一个参数

argv[0]

一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的

main

函数的参数个数应该是

argc-1

个;


pointer to table of cmd line args

(指向命令行参数表的指针),字符串数组,用来存放指向字符串参数的指针数组,每个元素指向一个参数,空格分隔参数,其长度为

argc

。数组下标从

0

开始,

argv[argc]=NULL


argv[0]

指向程序运行时的全路径名


argv[1]

指向程序在

DOS

命令中执行程序名后的第一个字符串


argv[2]

指向执行程序名后的第二个字符串


argv[argc]



NULL



二、源代码中的 argc 与 argv

由于

C

程序必须有

main()

函数为入口,而且它不能被其他函数调用(可以调用自身),因此不能再程序内部取得实际值。那么在何处把实参赋值给

main

函数的形参呢?这就需要调用”运行”或”

DOS

提示符”,在调用可执行程序

exe

时,编译器会帮助我们将输入参数的信息放入

main

函数的参数列表中传参。

我们来创建一个工程来实验一下:

#include<iostream>

using namespace std;
//测试 argc *argv[] 的功能
int main(int argc,char *argv[])
{
	for (int i = 0; i < argc; i++)
	{
		cout << "参数[ " << i << " ]的值为:" << argv[i] << endl;
	}
	cout << "参数个数为:" << argc << endl;
	system("pause");
}

我们运行这个程序时,你会发现它会直接出现下列结果:

在这里插入图片描述

我们并没有输入参数,

argv[0]

直接默认指向程序运行时的全路径名。

我们这样没法输入参数怎么办?我们可以使用

命令提示符窗口

来实现,快捷键

win + R

键打开对话框。在弹出的对话框中输入“

cmd

” 即可打开命令提示符窗口:

在这里插入图片描述
在这里插入图片描述

打开命令提示符窗口后需要输入生成的

exe

文件所在的完整路径,一个简便的方法是把

exe

文件

直接拖入提示符窗口即可,之后输入传入参数,以空格分隔,之后回车

,显示如下:

在这里插入图片描述

最后说明一下:

一般编译器默认使用 argc 和 argv 两个名称作为 main 函数的参数,但这两个参数如此命名并不是必须的,你可以使用任何符合 C++ 语言命名规范的变量名作为入参,效果是一样的。



版权声明:本文为Change_Improve原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。