探究一下C语言中main函数各种不同的写法

探究一下C语言中main函数各种不同的写法,第1张

main函数是C程序的入口函数,即程序的执行是从main函数开始,对其他函数的调动也是直接或间接地在main函数中被调用。那么main函数又是被谁调用呢?答案是 *** 作系统C语言发展至今,对main函数有多种不同的写法,下面就来探究一下各种不同的写法。

无参数版本:

NO.1

main(){}

NO.2

void main(){}

NO.3

int main(){}

NO.4

int main(void){}

有两个参数版本:

NO.5

int main(int argc,char *argv[]){}

NO.6

int main(int argc,char **argv){}

有三个参数版本:

No.7

int main(int argc, char* argv[], char* envp[])

写法1在C90标准下可以正常编译,而在C99和C11标准下会抛出一个警告(不写返回值,默认的返回值为int,也就相当于写法1和写法3等价)。写法2-6在C90、C99、C11标准下均能正常编译。在这么多写法中,到底哪一些才是main函数的标准写法?于是查阅了C标准文档对main函数的规范写法,见下图:

探究一下C语言中main函数各种不同的写法,pYYBAGLvhKyAVgBDAAKg_fw4wfs226.png,第2张探究一下C语言中main函数各种不同的写法,pYYBAGLvhLKAA2siAABIpcKQ1pM774.png,第3张

从标准文档中可以看出,写法4、5、6才是main函数的规范写法。,main函数是被 *** 作系统调用的, *** 作系统会根据main函数的返回值来判断程序的正确执行与否,这样是为了让C程序具有更好的移植性。写法5与写法6是等价的,第一个参数代表main函数参数的个数,第二个参数用指针分别指向这些参数。argv[0]代表程序名,argv[1]到argv[argc-1]代表程序参数,写法7在argc和argv的基础上多了一个环境变量参数,环境变量的形式是“ENV=value”,参数类型是指针数组或二级指针下面再看看main函数的返回值问题,见下图

探究一下C语言中main函数各种不同的写法,poYBAGLvhM2AWxaFAACz0xamiYk001.png,第4张

从图中可以看出,如果main函数的返回值是int类型的兼容类型,从main函数返回后的值与exit一起相当于执行了exit xxx。xxx代表从main函数返回后的值。如果忘记写了return语句,当执行到main函数体的右大括号},会返回默认值0。返回0代表程序执行成功,程序退出。如果main函数的返回类型不是int类型的兼容类型,程序返回给 *** 作系统的状态将会不明确。

这下对main函数是不是有一个更深入的了解了呢?


审核编辑:刘清

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/3001062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-27
下一篇 2022-09-27

发表评论

登录后才能评论

评论列表(0条)

保存