完整地解答这个问题:
argc=argument count; 自动计算命令行有几个参数
argv=argument vector; 将命令行的参数名字分别置于各个字符串指针中。
注意这里的类型:argc是整数类型,不多解释。char* argv[]是字符串指针。
用你的例子来说,test.exe 1 2 3,那么
argc=4;
argv[0]="test.exe"; argv[1]="1"; argv[2]="2"; argv[3]="3";
至于应用的话,举个很常见的例子:
比方说,你的main函数需要打开一个文件,对文件进行操作,而且希望用户在命令行的第二个位置就直接输入(i.e., argv[1]的位置),那么可以写如下程序(我写的比较简略,没有编译,因为比较简单。。。):
int main(int argc, char* argv[]){
if(argv!=2){
cout << "请输入test.exe fileName格式执行"; //这里是输出错误;在C里面是printf
return 0; //退出main程序;
} else{
instream in_stream; //这里我用的是C++的方法,在C里面应该是fopen吧。注意加相对应的library调用;C++里面是fstream;C里面是stream.h?我有点忘了。。。
instream.open(argv[1]); //因为上面已经对于argument的数量进行判断,所以可以打开(如果有这个文件的话)
.....
return 0; //执行完退出
}
对于你补充的问题,虽然没有见过一本书提过main函数的argv[0]一定是包含这个main函数的可执行文件的名称,但是,我觉得应该不对,因为执行的时候可能在前面加上另外的前缀,如(在linux情况下):
sudo text.exe fileName
这里sudo是argv[0],text.exe是argv[1],fileName是argv[2]。
当然在大多数情况下,argv[0]是这个main函数的可执行文件的名称。
温馨提示:答案为网友推荐,仅供参考