OpenCV——argc与argv参数

背景

  在看OpenCV源码时,在示例程序中经常出现argc和argv这两个参数,那么它俩的用途到底是啥呢?

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

int main(int argh, char ** argv)
{
const char* imagename = argc > 1 ? argv[1] : “1.jpg”;

}

其实带形参的main函数例如上面的那个例子,是UNIX、Linux、MacOS等操作系统中C/C++的main函数的标准写法,也是血统最纯正的main函数的写法。可能外国的程序大牛们更喜欢使用UNIX、Linux、MacOS等操作系统,所以我们接触到的由他们开发和维护的OpenCV库的时候,会看到argc和argv的出现。

argc和argv的具体含义

  这两个参数一般在命令行编译程序时有用。有些编译器已经允许将main函数的返回值设为void,这就已不再是合法的C++了,其实main(int argh, char ** argv)才是标准的写法。其中第一个参数为int类型的argc,用来统计程序运行时发给main函数的命令行参数的个数,在VS中默认值为1。第二个参数是char*类型的argv[],为字符串数组,用来存放指向的字符串参数的指针数组,每个元素指向一个参数,各成员含义如下:

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

posted @ 2019-07-09 18:11  pokeCode  阅读(430)  评论(0编辑  收藏  举报