C语言main函数到底该怎么写?6种写法全解析

张开发
2026/4/3 15:42:22 15 分钟阅读
C语言main函数到底该怎么写?6种写法全解析
作为C程序入口函数的main函数程序执行起始于它其他函数的调用直接或间接在其中被进行那么main函数又是被谁所调用呢答案是操作系统C语言发展至今存在多种不同写法的main函数下面就来探究一下各类不同的写法注测试环境是Ubuntu 17.10GCC版本是7.2.0。NO.1main(){}例#include main(){ printf(Hello World\n); }NO.2void main(){}例#include void main(){ printf(Hello World\n); }NO.3int main(){}例#include int main(){ printf(Hello World\n); return 0; }NO.4int main(void){}例#include int main(void){ printf(Hello World\n); return 0; }NO.5int main(int argc,char *argv[]){}例#include int main(int argc,char *argv[]){ printf(Hello World\n); return 0; }NO.6int main(int argc,char **argv){}例#include int main(int argc,char **argv){ printf(Hello World\n); return 0; }上面测试的情况是这样子的写法1在C90标准状况下能够正常进行编译然而在C99以及C11标准状况下会抛出一个警告这是因为不写返回值的话默认的返回值是int类型了也可以这么说写法1和写法3是等价的。写法2至6在C90、C99、C11标准状态下都能够正常进行编译。那么在这么多的写法当中究竟哪些才是main函数的标准写法于是去查阅了C标准文档对于main函数的规范写法如下所示看得出于标准文档里写法4、5、6才是main函数的规范写法写法5跟写法6是等价的那为何会有写法1、2、3呢那是因从1972年C语言被设计出来至C90标准发布这段时间C语言各异的实现致使了main函数的差异性强烈不推荐写法2。因为main函数是由操作系统调用的操作系统会依据main函数的返回值判定程序是否正确执行若返回void那代表的是什么状态呢并且存在一些编译器支持这般写法而另一些编译器却不支持然而所有的标准均未认同这种写法。针对写法1以及写法3勉强还能够予以接受可是也并不建议如此书写最好还是依照标准写法去写。为何要依照标准写法书写呢那是由于为了使C程序具备更好的移植性。写法5跟写法6是等效的首个参数表示main函数参数的数量第二个参数借助指针分别指向这些参数。argv代表程序名argv直至argv代表程序参数。下面再看看main函数的返回值问题见下图从图里能够看出要是main函数的返回值属于int类型的兼容类型那么从main函数返回之后的值与exit一起就如同执行了exit xxx。其中xxx指的是从main函数返回后的值。要是忘记写return语句在执行到main函数体的右大括号}时会返回默认值0。返回0意味着程序执行成功程序将会退出。要是main函数的返回类型并非int类型的兼容类型程序返回给操作系统的状态就会不明确。

更多文章