[C++][基础概念]main函数中的参数argc和argv的含义和用法

注:这篇博客主要是转载http://blog.csdn.net/dcrmg/article/details/51987413,但同时也加入了自己的理解和总结。

一、概念

argc是argument count的缩写,表示传入main函数的参数的个数;

argv是argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的路径和名称,因此,需要我们传入main函数的参数个数应该是argc-1个;

二、使用方法

1.通过命令提示符传入

首先需要打开命令提示符窗口,点击开始菜单在“搜索程序和文件”里输入命令“cmd”或者直接按快捷键 Windows+R 弹出的对话框里输入“cmd”即可打开命令提示符窗口:


打开命令提示符窗口后需要输入生成的exe文件所在的完整路径,一个简便的方法是把exe文件直接拖入提示符窗口即可,

之后输入传入参数,以空格分隔,之后回车,显示如下:

如果你坚持要手工输入完整路径的话,你会发现等你“Ctrl+C”路径后,在提示符窗口中按“Ctrl+V”却不能粘贴,这时候可 在窗口中右键单击一下试试,你会发现右键菜单里的粘贴功能还是有效的。

2.在VS中如何传入参数

右击项目—>属性—>配置属性—>调试—>命令参数,在命令参数中输入,每个参数之间用空格隔开。


之后点击确定并应用,运行之后显示如下:

三、需要注意的地方

1.我们可以通过规范一些字母来表示输入参数的意义,再通过switch函数来传入到变量中。

例如,我们规定:

/s后面加的是一个字符串

/i后面加的是数字

/a后面加的是数组(注意每一个空格便表示一个参数,故传入数组时不要"1 2 3",而是应该"1,2,3")

还有一点需要注意的是传入的都认为是字符串型,如需要还得转化类型。

我设置的参数为:

/sMakeLifeBetter /i10 /a1,2,3,4

代码如下

#include<iostream>
using namespace std;
int main(int argc, char* argv[]) {
	char string[256];
	int num;
	
	int array[256];
	int arrayLen;
	int m,n;
	int tempNum;
	char tempStr[256];
	cout << argc << endl;
	for (int i = 0;i < argc;i++)
	cout << argv[i] << "\n";
	cout << endl;

	
	if (argc != 4) {
		cout << "输入参数有问题" << endl;
		system("pause");
		return 0;
	}
	for (int i = 1;i < 4;++i) {
		switch (argv[i][1]) {
		case's':
			strcpy_s(string, 256, argv[i] + 2);
			cout << "s:" << string << endl;
			break;
		case'i':
			num = atoi(argv[i] + 2);
			cout << "i:" << num << endl;
			break;
		case'a':
			arrayLen = strlen(argv[i]);
			n = 0;//
			for (m = 2;m < arrayLen;) {
				tempNum = atoi(argv[i] + m);
				_itoa_s(tempNum, tempStr, 10, 10);
				array[n] = tempNum;
				n++;
				m += strlen(tempStr) + 1;
			}
			//测试输出array
			cout << "array:" << endl;
			for (m = 0;m < n;m++)
				cout << array[m] << " ";
			cout << endl;
			break;
		default:
			cout << "输入参数有问题" << endl;
		}
	}
	
	system("pause");
	return 0;
}
输出结果截屏:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值