main函数中的argc和argv

摘抄自《OpenCV3编程入门》–argc和argv参数解惑(p56-p58)。

在与opencv打交道时,我们经常会在相关的示例程序中见到argc和argv这两个参数。

  argc和argv中的arg指的是“参数”(例如:arguments,argument counter,argument vector)。其中,argc为整数,用来统计程序运行时送给main函数的命令行参数的个数;argv加上*与[],成为*argv[],表示字符串数组,用来存放指向字符串参数的指针数组,每个元素指向一个参数。
argc、argv这两个参数一般在用命令行编译程序时有用。在初学C++时,往往要弱化这两个参数的用法,main函数往往不带参数。而在opencv的官方示例程序中,main函数写法常常会带上两个形参,一般为argc和argv,并且在函数体内部会用到这两个参数,如下。

int main( int argc,char** argv )
{
    const char* imagename = argc > 1 ? argv[1] : "lena.jpg";
}

  其实,带形参的main函数,如main(int argc,char *argv[],char **env),都是UNIX、Linux以及Mac OS操作系统中C/C++的main函数的标准用法,并且是血统纯正的main函数的写法。可能是由于外国专家们更习惯于用UNIX、Linux以及Mac OS等操作系统,所以我们接触到的由他们开发和维护的opencv这款开源视觉库的时候,自然会发现代码中常有argc和argv的出现。
  其实,main(int argc,char *argv[],char **env)才是UNIX和Linux中标准的写法。其中,第一个参数,int类型的argc,为整形,用来统计程序运行时发送给main函数的命令行参数的个数,在Vsiual Studio 中默认值为1。第二个参数,char*类型的argv[],为字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。各成员含义如下:

  • argv[0]指向程序运行的全路径名
  • argv[1]指向在DOS命令行中执行程序名后的第一个字符串
  • argv[2]指向执行程序名后的第二个字符串
  • argv[3]指向执行程序名后的第三个字符串
  • argv[argc]为NULL

需要指出,argv[1]对应与【项目属性】-【配置属性】-【调试】-【命令参数】中的值。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值