
一、main( )
这种写法没有返回值,没有参数。
其实这种写法使用现在的编译器编译时会警告,但查了一下在C89标准中是可以的,而且由于函数没有显式声明返回类型那么编译器会将返回值默认为int的缘故,其返回值也为int。
二、void main( )
这种写法返回值为void,没有参数。
我一直比较好奇这种样式是怎么来的,main函数的返回值要作为程序退出的状态,声明为void在程序退出后,退出情况就不得而知了。查了C89/C99/C11相关文档,都没有提到任何这种写法的痕迹,我见过最多的写法就是这种,不清楚为什么有这么多初学者这么写。严格来说返回值为void是不正确的。
三、int main( )
这种写法返回值为int,没有参数。
这么写的人也不少,不过有一点要提醒一下大家:虽然声明没有参数,但是实际调用却可以传参,关于这个知识点就不多讲了。
四、int main(void)
这种写法返回值为int,参数为void。
这是最常见的一种写法了。形参为void,表明它在调用的时候不能传入任何参数,那么它也就不能获取命令行参数了。
五、int main(int argc,char *argv[])
这种写法返回值为int,有两个参数,第一个入参为命令行参数个数,第二个入参为命令行参数数组。
此种写法也比较常见,通常用于实现需要从命令行获取参数的功能。
六、int main(int argc,char *argv[],char *envp[]
这种写法返回值为int,有三个参数,分别为命令行参数个数,命令参数数组,环境变量数组。
实际上它就比第五个多一个参数,用于获取环境变量,但全局变量environ可以代替envp的作用 ,因这种形式的存在也是比较尴尬,不太建议。
)
)
)

)
)
)

)
)
)
)
)
)
)
)