int main( int argc, char* argv[] )
带形参的main函数,如 main( int argc, char* argv[], char **env ) ,是UNIX、Linux以及Mac OS操作系统中C/C++的main函数标准写法,并且是血统最纯正的main函数写法。
在如今的Visual Studio编译器中,main()函数带有参数argc和argv或者不带,即无论是否在函数体中使用argc和argv,返回值为void或不为void,都是合法的。
即至少有如下三种写法合法:
1、返回值为整型带参的main函数
int main( int argc, char** argv )
{
//函数体内使用或不使用argc和argv都可
……
return 0;
}
2、返回值为整型不带参的main函数
int main( int argc, char** argv )
{
//函数体内使用了argc或argv
……
return 0;
}
3、返回值为void且不带参的main函数
void main()
{
……
}
一、argc、argv的具体含义
argc和argv参数在用命令行编译程序时有用。main( int argc, char* argv[], char **env ) 中
第一个参数,int型的argc,为整型,用来统计程序运行时发送给main函数的命令行参数的个数,在VS中默认值为1。
第二个参数,char*型的argv[],为字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。argv是指向指针的指针,main函数的第二个参数“char *argv[]“也可以替换为 “char **argv“,两者是等价的。各成员含义如下:
argv[0]指向程序运行的全路径名
argv[1]指向在DOS命令行中执行程序名后的第一个字符串
argv[2]指向执行程序名后的第二个字符串
argv[3]指向执行程序名后的第三个字符串
argv[argc]为NULL
第三个参数,char**型的env,为字符串数组。env[]的每一个元素都包含ENVVAR=value形式的字符串,其中ENVVAR为环境变量,value为其对应的值。平时使用到的比较少。
一般编译器默认使用argc和argv两个名称作为main函数的参数,但这两个参数如此命名并不是必须的,你可以使用任何符合C++语言命名规范的变量名作为入参,效果是一样的:
二、调试方法
方法一:
下面给出一个很典型的例子来进行演示说明:
#include <stdio.h>
using namespace std;
int main(int argc, char ** argv)
{
int i;
for (i = 0; i < argc; i++)
printf("Argument %d is %s\n", i, argv[i]);
return 0;
}
在exe文件夹中shift+右击,选择“在此处打开命令窗口”,按TAB键切换文件,选择exe文件,输入 a b c d回车(注意在a b c d前面要加个空格),得到如下结果:
方法二
调试如下代码:
#include <stdio.h>
using namespace std;
int main(int argc, char ** argv)
{
int i;
for (i = 0; i < argc; i++)
printf("Argument %d is %s\n", i, argv[i]);
getchar();//等待读入任意字符而结束,在此用于保持窗口显示,按下回车键即可退出
return 0;
}
进入项目【项目】—>【属性】—>【调试】—>【命令参数】—>输入a b c d,如果有多个字符串参数,则用空格隔开。比如要读入两张图片,在命令参数里输入”1.jpg” “2.jpg”。
方法三:
最简单的方法就是在不变动原始程序的基础上,将与argc或argv有关的代码注释或替换掉。比如将“Mat Image=imread(argv[1]);”替换成“Mat Image=imread(“1.jpg”);”。
#include <iostream>
#include <core/core.hpp>
#include <highgui/highgui.hpp>
using namespace std;
using namespace cv;
void main(int argc,char **argv)
{
Mat image=imread(argv[1]);
imshow("Lena",image);
waitKey();
}
上一篇: RocketMQ(三)技术架构
下一篇: Python学习:7.文件操作
推荐阅读
-
#include #include #include int substr(char dst[], char src[], int start, int len
-
c# StringBuilder.Replace 方法 (Char, Char, Int32, Int32)
-
c语言:输出以下关键字的字节大小及输出一个地址:char,short,int,float,double,long
-
对比MySQL中int、char以及varchar的性能
-
Java String int char基本数据类型 数组 常用转换方法
-
#include #include #include int substr(char dst[], char src[], int start, int len
-
c++编写递归函数char *itostr (int n,char *string),该函数将整数n转换为十进制表示的字符串。
-
[C语言]实现函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中
-
C语言:int型数据向char型数据的强制类型转换原理
-
int型指针转换成char*问题分析