学习编程应该都非常熟悉这两个参数,可是对于初学者来说,往往要弱化argc和argv的用法,因为main函数常常不带参数。接下来,让我们看看这两个参数吧!
argc和argv指的是“参数”。其中,argc为整数,用来统计运行程序时送给main函数命令行参数的个数;argv 加上 * 与 [],表示字符串数组,用来存放指向字符串参数的指针数组,每一个元素指向一个参数。
具体含义:
argc 和 argv 这两个参数一般在命令行编译程序时有用。
主函数 main 中变量 (int argc,char *argv[]) 的含义
有些编译器允许将 main() 函数的返回类型声明为 void,这就不再是合法的C++了
其实,main(int argc,char *argv[],char **env)才是UNIX和Linux中的标准写法。
argc:int类型,用来统计程序运行时发送给main函数命令行参数的个数,在VS中默认为1。
argv:char* 类型,用来存放指向字符串参数的指针数组,每一个元素指向一个参数。成员含义如下:
argv[0]:指向程序运行的全路径名
argv[1]:指向在dos命令行中执行程序名后的第一个字符串
argv[2]:指向执行程序名后的第二个字符串
argv[3]:指向执行程序名后的第三个字符串
argv[argc]:为NULL
需要指出,argv[1] 对应于【项目属性】--》【配置属性】--》【调试】--》【命令参数】中的值。记住双引号也要带上(如读取名为1.jpg的图片,要在命令参数中填写 “1.jpg”,若有多个参数,参数之间用空格分开)
env:char**类型,为字符串数组。env[]的每一个元素都包含ENVVAR=VALUE形式的字符串。其中,ENVVAR为环境变量,value为ENVVAR的对应值。
argc、argv和env是在main()函数之前被赋值的。其实main()函数严格意义上并不是真正意义上程序的入口点函数,往往入口点还与操作系统有关。而在Windows的控制台应用程序中,将main()函数作为程序的入口点,并且很少使用argc、argv等命令行参数。