C++程序中1. main(int argc, char *argv[])函数的参数意义

#include "iostream"
using namespace std;
int main(int argc, char *argv[])
{
	int i;
	for (i = 0; i < argc; i++)
	{
		cout << "argument" << i << ": " << argv[i] << endl;
	}
	cout << "total argument:" << argc;
	return EXIT_SUCCESS;
}

以上程序执行该行共有5个参数,执行main时,argc的初值即为5。argv的5个元素分为5个字符串的首地址。执行for语句,每循环一次 i值加1,当argc等于i即5时停止循环,共循环5次, 因此共可输出5个参数。在cout中,由于打印项argv, 故第一次打印的是argv[0]所指的字符串是程序名。后几次循环分别打印后几个字符串。

从而可以得出结论:两个参数中第一个参数argc表示在Dos命令行中的输入的程序名和参数个数之和,第二个参数中argv[0]记录的程序名,后面的argv[i]记录的输入参数。

另外argc argv是标识符,可以修改名称。

 int main () 、 int main ( int argc , char** argv )  、int main ( int argc , char* argv[] )  一共有三种写法

int main () 是一种对主函数的参数缺省的写法,也是我是在学习C++时主要用到的一种写法,自己也很习惯这种写法。

int main ( int argc , char** argv ) 和 int main ( int argc , char* argv[] ) 是一样的效果和作用。其中argc 是在运行编译的程序  时:输入参数的个数+ 1(因为要包括程序名,程序名也算是一个参数)。argv则是指向这些参数的指针数组。

左边结果是直接运行源代码未在命令行输入任何参数产生的结果(参数个数为1即程序名),右边的结果是在命令行输入a b c d如下(a b c d之间有空格隔开):1选中点击属性,进入2,在3处输入参数即可(该程序参数个数一共为5=1+4)。

关于main 函数的参数 ,书中的介绍如下:

mian函数不带参数时,main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为: 
main (argc,argv)
int argv;
char *argv[];或写成:
main (int argc,char *argv[])
  由于main函数不能被其它函数调用, 因此不可能在程序内部取得实际值。那么,在何处把实参值赋予main函数的形参呢? 实际上,main函数的参数值是从操作系统命令行上获得的。当我们要运行一个可执行文件时,在DOS提示符下键入文件名,再输入实际参数即可把这些实参传送到main的形参中去。

扫描二维码关注公众号,回复: 8753669 查看本文章

  DOS提示符下命令行的一般形式为: C:\>可执行文件名 参数 参数……; 但是应该特别注意的是,main 的两个形参和命令行中的参数在位置上不是一一对应的。因为,main的形参只有二个,而命令行中的参数个数原则上未加限制。argc参数表示了命令行中参数的个数(注意:文件名本身也算一个参数),argc的值是在输入命令行时由系统按实际参数的个数自动赋予的。

例如有命令行为: C:\>test a b c d由于文件名test本身也算一个参数,所以共有5个参数,因此argc取得的值为5。argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。 指针数组的长度即为参数个数。数组元素初值由系统自动赋予。

发布了28 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/m0_37957160/article/details/103819230
今日推荐