您的位置:首页 > 大数据 > 人工智能

main函数中的argc和argv

2017-08-15 19:58 197 查看
摘抄自《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]对应与【项目属性】-【配置属性】-【调试】-【命令参数】中的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: