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

来源:互联网 发布:秋天 知乎 编辑:程序博客网 时间:2024/05/16 09:41

注:这篇博客主要是转载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;}//测试输出arraycout << "array:" << endl;for (m = 0;m < n;m++)cout << array[m] << " ";cout << endl;break;default:cout << "输入参数有问题" << endl;}}system("pause");return 0;}
输出结果截屏:




0 0
原创粉丝点击