目录
- 1、main()
- 2、void main()
- 3、int main(void)
- 4、int main ()
- 5、int main(int argc,char *argv[])
前言:
但凡是学过C语言的人,都知道要先写
main
函数,然而很多时候我们看到的main
函数却各有差异,这究竟是为啥?哪种是对的呢?今天我们就来聊聊main
函数。那么main
函数一共有多少个版本呢?
1、main()
直接的mian()
并没有返回值,没有入参。这种写法实际来说,部分编译器会显示警告,并且会返回默认值为int。不过在C89标准中其实是可以的,由于没有声明返回类型,所以才会返回默认值int
。
2、void main()
初学者经常会使用的形式,但是并不知道来源在哪,在C89/C99/C11
等文档中都没有提到这种形式的痕迹。这种写法的返回值是void
,没有参数。值得注意的是,一旦声明是void
,在程序退出后,想要获取其退出状态也就不可以了。所以还是不建议返回值为void
的。
3、int main(void)
比较常见的写法,这种写法的形参为void
,表明它在调用的时候不能传入任何参数,那么它也就不能获取命令行参数了。
4、int main ()
和上面第3种看起来好像没啥区别,但是还是有些许不同。就下面例子来说:
#include<stdio.h> void test(); int main() { test(4); return 0; } void test(int a) { printf("%d",a); }
程序仍然可以正常运行,test
函数虽然声明为无入参,但调用时却是可以传入任何参数或不传参数的。
5、int main(int argc,char *argv[])
int argc
入参为命令行参数个数,char *argv[]
入参为命令行参数数组。这种写法也比较常见的,主要用在需要从命令行获取参数的功能。int main(int argc,char *argv[],char *envp[])
包含三个参数的一种写法,上面第5种的升级版,int argc
是命令行参数个数,char *argv[]
是命令参数数组,char *envp[]
是环境变量数组。虽然只比第六种多了一个参数,但全局变量environ可以代替envp的作用,获取或者设置环境变量可以使用getenv
或putenv
,因此也没有必要使用该形式。这种写法多源于编译器的扩展。上面写了这么多种写法,那么到底写哪种才算是对的?查阅C89/C99/C11
标准文档,
里面明确固定了两种写法:
int main(void) { /* ... */ }
int main(int argc, char *argv[]) { /* ... */ }
到此这篇关于C语言 main 函数详情的文章就介绍到这了,更多相关C语言 main 函数内容请搜索本网站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本网站!
您可能感兴趣的文章:
- Go 的入口函数和包初始化的使用
- 细说webpack源码之compile流程-入口函数run
- C语言中main函数两个参数的作用
- C语言中main函数与命令行参数详细讲解
- C语言main()函数的参数问题详解
- c语言中main函数用法及知识点总结
- C语言main函数的三种形式实例详解
- C语言中 int main(int argc,char *argv[])的两个参数详解
- c语言main函数使用及其参数介绍
- C语言的入口函数的实现