在C++函数参数传递中,我们知道,main函数是演示C++程序如何向函数传递数组的好例子。一般来说,我们定义的的大多main函数都只有空的形参列表:
int main () { … }
然而,有时我们确实需要给main函数传递实参,一种常见的情况是用户通过设置一组选项来确定函数所要执行的操作。例如:假定main函数位于可执行文件prog (通常是指编译后产生的**.exe文件)之内,我们可以向程序传递下面的选项:
prog -d -o ofile data0
这些命令行选项通过两个(可选的)形参传递给main函数:
int main ( int argc, char *argv[ ] ) { … }
//第一个形参argc:表示数组中字符串的数量
//第二个形参argv:表示一个数组,它的元素是指向C风格字符串的指针
第二个形参argv是一个数组,它的元素是指向C风格字符串的指针;第一个形参argc表示数组中字符串的数量。因为第二个形参是数组,所以main函数也可以定义成:
int main ( int argc, char **argv) { … }
其中argv指向char * 。
二.注意
1. argv[0]指向程序的名字或者一个空字符串,无需用户输入
2. 接下来的元素依次传递命令行提供的实参,即可选的实参从argv[1]开始
3. 最后一个指针之后的元素值保证为0
以上面提供的命令行为例,argc应该等于5,argv应该包含如下的C风格字符串:
argv [0] = “prog” ;
argv [1] = “-d” ;
argv [2] = “-o” ;
argv [3] = “ofile” ;
argv [4] = “data0” ;
VS2013中有两种方法:
(1) 无需调试的情况:直接在系统中用DOS命令进入到*.exe所在的目录下
然后输入:
**.exe pra1 pra2
注意这种情况下,如果参数中有一个是待读取文件的filename,例如:123.txt,那么要默认把这个文件放在**.exe所在在目录下。这与第二种情况不同
(2) 需要调试的情况:
点击菜单栏的 调试>>**属性:
调试->命令参数,输入要读取得视频名称,(该视频位置处在该项目的文件下)
当命令参数只有一个时,直接运行调试程序即可,自动传递;
当命令参数不止一个时,运行程序后,需要在弹出的命令窗口中输入:
liu tree.avi
表示:
argv [1] = “liu”
argv [2] = “tree.avi”
注意:命令行不需输入argc参数
from:https://blog.csdn.net/qq_30214939/article/details/62037708?locationNum=7&fps=1
from:https://blog.csdn.net/qq76536257/article/details/50590272