C/C++中命令行参数的原理

2016-02-19 19:59 4 1 收藏

今天图老师小编给大家精心推荐个C/C++中命令行参数的原理教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

【 tulaoshi.com - 编程语言 】

很早以前的dos应用程序中,我们经常会用命令行参数执行应用程序例如: copy c:1.txt d:   在c/c++中,命令行参数的传递是利用main进行形参传递实现的 !-- frame contents -- !-- /frame contents --   前面的教程中我们对面都进行了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 
  using namespace std; 
   
  void main(int argc,char* argv[])   
  { 
      int i=0; 
      while(iargc) 
      { 
          cout*argv++endl;//这里改写成coutargv[i]endl;也是正确的 
          i++; 
      } 
      cin.get(); 
  }   在命令行参数的提交中,系统会自动给指针数组后加上一个NULL,所以代码可以写成如下简单形式,简化代码提高效率。#include iostream 
  #include string 
  using namespace std; 
   
  void main(int argc,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  更多内容请看C/C++技术专题  Linux命令简介专题,或

来源:http://www.tulaoshi.com/n/20160219/1622480.html

延伸阅读
函数参数的求值顺序 当一个函数带有多个参数时,C++语言没有规定在函数调用时实参的求值顺序。而编译器根据对代码进行优化的需要自行规定对实参的求值顺序。 !-- frame contents -- !-- /frame contents -- 有的编译器规定自左至右,有的编译器规定自右至左,这种对求值顺序的不同规定,对一般参数来讲没有影响。但是,假...
在学习c/c+过程中,指针是一个比较让人头痛的问题,稍微不注重将会是程序编译无法通过,甚至造成死机。在程序设计过程中,指针也往往是产生隐含bug的原因。下面就来谈谈指针的应用以及需要注重的一些问题,里面也许就有你平时没有注重到的问题,希望能帮助各位读者理解好指针。 !-- frame contents -- !-- /frame contents -- ...
该程序使用正则表达式进行文字替换,广度优先遍历子目录(基础知识很重要), 解决无法替换回车换行的问题 class Replacee { /// /// 替换文件中字符 /// /// 文件全名 /// 用于替换的字符串 /// 用于查找的字符串 /// 是否备份文件 private static void DoReplace(string fileFullName, string replacedBy, string findPatter...
比如 一个函数 chat(link &a); chat(ling *a); 前者引入一个地址做形参 是不是可以把一个指针变量p。。 这么用chat(p); 那跟第二个函数 有什么区别呢 都是传地址啊。。 小弟弄不明白~~ chat(int&a); chat(int *a); 这两个函数是完全不同意义的东西,你的理解主要是在int&a和int* a这个类型上面。要注意int&和int*是两个完全不同的...
函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢? 假如我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。 !-- frame contents -- !-- /frame contents -- 定义一个指向函数的指针用如下的形式,以上面的test()为例: ...

经验教程

451

收藏

75
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部