看到不同的人写出的 C 或者 C++ 程序时,可能会出现不一样的 main 函数的定义,下面的几种定义方式都是对的:

int main(void)
      int main(int argc)
      int main(int argc, /*const*/ char** argv)
      int main(int argc, /*const*/ char** argv, /*const*/ char** enviorn)



      这几种方式中,第三种方式是最常用的。那么,这些参数代表着什么呢?下面,我就以最后一个定义的形式解释这几个参数的定义:


#include <stdio.h>

/*
	@description:	描述 main 函数的参数以及各个参数的作用
	@parameters:
		argc:运行程序时,输入参数的个数,如果只是输入程序名,那么,argc = 1
		argv:这是一个字符串指针,指向每一个参数
		environ:当前系统的环境变量
*/

int main(int argc, const char** argv, const char** environ)
{
	int i = 0;
	
	printf("argc : %d\n", argc);
	
	for (i = 0; i != argc; ++i)
	{
		printf("argv[%d] : %s\n", i, argv[i]);
	}
	
	for (i = 0; environ[i] != '\0'; ++i)
	{
		printf("environ[%d] : %s\n", i, environ[i]);
	}
	
	return 0;
}



      好吧,编译运行下吧,这里,我为了突出说明 argc 的作用,在参数上加了几个没有用的词,运行截图如下所示:

C 中 main 函数的参数_main


      既然以上几种定义的形式都对,那么,我们应该选择用什么方式去定义 main 函数呢?这个,没有准确的答案,就是当你需要什么时,你就那样定义。如果你不需要参数,那么,你完全可以把参数列表设置成 void;一般,我们不用最后一种定义,因为,如果我们需要查看环境变量时,有专门的命令实现这种操作。

      如果你不确定应该选择哪一种定义的方式,那么,选择第三种方式是一个不错的选择。