关于c++ Main函数分析与讲解
2013-03-31 00:51
435 查看
在c++的控制台程序开发过程中,很多人对与函数int main(int argc, char* argv[])不甚了解,经常会问一些基础性的问题,刚开始以为只是个别的人不清楚,时间一长,发现不懂的人还是比较多的。当然对于这类情况,很多人选择在DOS下运行,通过切换到当前目录,然后把参数来解决。其实这不是最好的办法,而且每次调试和编译都在DOS下进行,给程序开发带来了诸多的不便,于是写下这篇日记,希望能给那些不甚理解int main(int argc, char* argv[])函数的朋友一个解释,能帮助到你们不甚兴奋。
首先,来分析这个函数int main(int argc, char* argv[]),该函数是控制台程序的入口程序,C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv,C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。其中argc表示的是main函数接受的参数的个数,argv是参数值。在DOS提示符下命令行的一般形式为: C:\>可执行文件名 参数 参数。 下面,我们来看一个实例,在c++中if( argc == 2 && (pImg = cvLoadImage( argv[1], 0)) != 0 )有这个一个判断函数,其中的意思是什么呢?其是判断main函数传进来的参数是不是两个,然后从第二个参数argv[1](数组下标从0开始)给出的路径加载一幅图像,并判断是否成功。但是参数是怎么传进去的呢?很多人都不明白。继续以VC6.0环境为例进行讲解,Main函数的参数是通过“Project-Settings“跳出对话框:
图中的"Executable for debug session:下面的参数”D:\VCProjects\UltiApp\Debug\UltiApp.exe“表示的就是在DOS提示符下命令行的一般形式为: C:\>可执行文件名,即为main函数传进去的第一个参数argv[0],下面的”123.JPG“就是第二个参数argv[1](如果123.JPG不在当前目录下的话,就要用绝对路径),也即为上面程序pImg = cvLoadImage( argv[1], 0)中传给cvLoadImage的参数argv[1],如果main函数需要传入更多的参数,那么就在Program arguments中输入多个参数,每个参数用空格隔开,如123.JPG 234.JPG等。
首先,来分析这个函数int main(int argc, char* argv[]),该函数是控制台程序的入口程序,C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv,C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。其中argc表示的是main函数接受的参数的个数,argv是参数值。在DOS提示符下命令行的一般形式为: C:\>可执行文件名 参数 参数。 下面,我们来看一个实例,在c++中if( argc == 2 && (pImg = cvLoadImage( argv[1], 0)) != 0 )有这个一个判断函数,其中的意思是什么呢?其是判断main函数传进来的参数是不是两个,然后从第二个参数argv[1](数组下标从0开始)给出的路径加载一幅图像,并判断是否成功。但是参数是怎么传进去的呢?很多人都不明白。继续以VC6.0环境为例进行讲解,Main函数的参数是通过“Project-Settings“跳出对话框:
图中的"Executable for debug session:下面的参数”D:\VCProjects\UltiApp\Debug\UltiApp.exe“表示的就是在DOS提示符下命令行的一般形式为: C:\>可执行文件名,即为main函数传进去的第一个参数argv[0],下面的”123.JPG“就是第二个参数argv[1](如果123.JPG不在当前目录下的话,就要用绝对路径),也即为上面程序pImg = cvLoadImage( argv[1], 0)中传给cvLoadImage的参数argv[1],如果main函数需要传入更多的参数,那么就在Program arguments中输入多个参数,每个参数用空格隔开,如123.JPG 234.JPG等。
相关文章推荐
- 关于c++ Main函数分析与讲解
- 关于c++ 中内存拷贝 内存写超的情况分析
- 关于C C++的const详细讲解
- Java编程程序比C++的优劣分析与讲解
- 关于C++中虚拟继承的一些总结分析
- 【面向对象语言系列】关于 C++ 数据分析,你需要知道的事
- 关于C/C++中指针做形参的一点小分析
- 关于派生类的构造的——一个程序的分析(钱能c++ P353),加上了析构函数
- C++中关于类重复定义的分析和解决方法
- 嵌入式C++——关于C++的效率分析
- mangeto 关于getResourceModel()函数分析详细讲解
- 详细讲解 关于Linux静态库和动态库的分析
- 关于派生类的构造的——一个程序的分析(钱能c++ P353),加上了析构函数
- 关于C++函数返回局部对象的详细分析
- 关于C++中的const的简单反汇编分析
- C++中关于[]静态数组和new分配的动态数组的区别分析
- 详细讲解 关于Linux静态库和动态库的分析
- 关于结构体的详细讲解,C、C++中的区别
- 关于Android大数据收集,埋点统计的详细讲解以及案例代码分析附github代码
- 文《关于c++与java中文乱码问题分析与解决》中一个bug分析