当前位置:主页   - 电脑 - 程序设计 - C/C++
C/C++中命令行参数的原理
来源:网络   作者:   更新时间:2012-02-08
收藏此页】    【字号    】    【打印】    【关闭

  很早以前的dos应用程序中,我们经常会用命令行参数执行应用程序例如:

  copy c:1.txt d:

  在c/c++中,命令行参数的传递是利用main进行形参传递实现的

  前面的教程中我们对面都进行了void main()或者是void main(void)的定义,这表示main不返回任何类型,和main不带有任何参数,但在缺剩状态下mian()这样形式下,形式参数一直是存在在栈空间内的只是隐藏了起来。

  为了实现命令行参数我们将使用main(int argc,char* argv[])这样的形式进行定义argc和argv可以换成你自己喜欢的名称,不一定要用argv,argc这些形式只是习惯而已,char* argv[]我们前面已经讲述过,这就是一个指向指针数组,argv就是一个指针数组名,argv不是常量指针,而是具备变量特性的变量指针,它是可以移动的,由此我们可以改写成char* *argv也是正确的,int argc这个定义返回的将是参数的个数所以标记为整形(int)。

#include<iostream> 
#include<string> 
usingnamespacestd; 
 
voidmain(intargc,char*argv[])  
{ 
   inti=0; 
   while(i<argc) 
   { 
     cout<<*argv++<<endl;//这里改写成cout<<argv[i]<<endl;也是正确的 
     i++; 
   } 
   cin.get(); 
}

  在命令行参数的提交中,系统会自动给指针数组后加上一个NULL,所以代码可以写成如下简单形式,简化代码提高效率。

#include<iostream> 
#include<string> 
usingnamespacestd; 
 
voidmain(intargc,char*argv[])  
{ 
   while(*argv!=NULL)//这里写成while(*argv)也是正确的! 
   { 
     cout<<*argv++<<endl; 
   } 
   cin.get(); 
}

  最后我们说一下完整的命令行参数的原形:void main(int argc,char* argv[],char* env[])

  env用的很少,通常是用做事件的返回,这里就不讨论了,具体的可以查询书籍。

  void main(int argc)省略其它参数的定义也是可以的,这样运行时候就直接返回参数个数学,而不返回其它。

  运行命令行参数带有char* argv[]的时候,如果输入参数带有空格式,应该用双引号阔起来。

  例如 test4.exe "hello world!" ha ha

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明