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

一、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)

  其中参数 argcargv 用于运行时,把命令行参数传入主程序。
  其中 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++ 语言命名规范的变量名作为入参,效果是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值