您的位置:记叙网 > 杂谈 > >正文

​浅谈C语言的main函数里return 0的作用

摘要浅谈C语言的main函数里return 0的作用 初学者学习C语言时,最熟悉的莫过于printf(“hello world”)了,初学者们肯定都看过并写过如下代码(IDE是windows系统的devcpp): 编译后运行结果如下: 很多...

浅谈C语言的main函数里return 0的作用

初学者学习C语言时,最熟悉的莫过于printf(“hello world”)了,初学者们肯定都看过并写过如下代码(IDE是windows系统的devcpp):

编译后运行结果如下:

很多老师都会和初学者说,C语言main函数的格式就是这样:

int main()

{

.......;

return 0;

}

只需要照着模板套上去即可。但是,却有很少老师会详细地解释return 0有什么用。

我当初学习C语言时,问过老师return 0的具体用途,老师只回答“return 0是退出主函数必须的”,然后就没了,弄得我一头雾水。

经过后期的学习和实践,我终于弄懂了return 0的作用。

C语言中,学习到函数的章节的小伙伴就知道,函数是可以有返回值的,可以通过return将该函数结果返回并赋值给另一个变量,以存储起来留作后续使用。比如,取最大值函数:

当程序运行到Max=max(num1,num2)时,num1和num2的值会传入max函数的形参a,b。return result的作用是将result这个变量的值存放到一个“临时区域”,而“Max=”就是从这个“临时区域”中获取result的值。

当然,这个“临时区域”不是真正意义上的“临时的区域”,而是寄存器,这涉及到底层汇编的知识,这里不细讲。

同样道理,main函数,本质也是函数。和普通函数一样,main函数也有返回值。而return 0,就是将main函数的结果0返回。但main函数又比较特殊,它的返回值,由“操作系统”来获取。

这时肯定会有人疑惑:普通函数的返回值可以通过赋值运算符“=”获取。那main函数的返回值如何获取呢?

既然main函数的返回值返回给操作系统,自然要从操作系统中获取获取mian函数的返回值。

对于操作系统来说,一个可执行文件相当于一个进程,操作系统会管理进程的资源,自然包括进程的返回值。所以,main函数的返回值要从进程中获取,获取进程的返回值,就是获取main函数的返回值。在windows系统下,通过CreateProcess函数创建运行进程并通过GetExitCodeProcess函数获取进程的返回值;在linux系统下,通过system函数创建运行进程并通过WEXITSTATUS获取进程的返回值。

以windows系统为例:

程序功能:除法运算,当除数为0时输出错误log,除数不为0时输出商和正确log。

IDE:windows dev-cpp

程序1:div.c

可以看到,main函数有两个返回值:当除数不为0时,return 1;除数为0时,return -33。并不是习惯上的return 0;

编译连接生成可执行文件“div.exe”。

程序2:get_exitcode.c

通过CreateProcess创建进程来运行div.exe,然后通过GetExitCodeProcess获取div.exe的值,即div.c中main函数的返回值。

编译连接生成可执行文件get_exitcode.exe之后,运行get_exitcode.exe,可得到如下结果:

在div.c中,被除数是3,除数是1,除数不为0,输出“run div.exe successfully!!”,商是3,返回值为1,和main函数设定的返回值一样。

若将div.c中的除数改成0:

重新编译连接生成可执行文件后,运行get_exitcode.exe得到如下结果:

在div.c中,被除数是3,除数是0,输出“run div.exe wrong!!”,返回值为-33,和main函数设定的返回值一样。

可见,main函数返回值不一定就是0,是可以根据实际情况而定的。对于初学者来说,通常就一个程序一个main函数从头跑到尾,不考虑其他进程的调用情况,因此在main函数末尾直接return 0即可。当涉及到进程间的调用时,就要合理设置main函数的返回值,以便判断进程是否正常运行。

标签:

推荐阅读

  • ​你所不知道的成都高新西区

    你所不知道的成都高新西区 成都高新西区是国家科技部批准的国家级高新技术产业开发区,是实施省、市一号工程的重要载体,是聚集发展以电子信息为龙头及现代中药等高新技术产业...

    2024-12-06 00:41:17
  • ​长沙:中韩足球大战 1:0中国队胜

    长沙:中韩足球大战 1:0中国队胜 2017年3月23日晚,中国国足在长沙贺龙体育场迎战韩国队。到目前为止,中国队在12强赛中尚未尝胜绩,积分垫底。如果国足想要继续保留晋级俄罗斯世...

    2024-12-05 18:12:02
  • ​在肯德基做兼职的真实感受

    在肯德基做兼职的真实感受 我家孩子上幼儿园了,我一个人在家呆了一个月实在待不住了,就在网上找兼职,找了好多工作时间都不合适,都快放弃了,结果发现肯德基在招兼职就是工...

    2024-12-05 18:09:47
  • ​预算7-8万买什么车好?这几款好开还不贵,家用正合适

    预算7-8万买什么车好?这几款好开还不贵,家用正合适 一个家庭拥有一辆车会给生活带来很大的便利,但是现在一个普通的家庭经济压力都很大,各种支出都不少,那么如何在7-8万之间...

    2024-12-05 18:07:32
  • ​乌鲁木齐南山雪景美

    乌鲁木齐南山雪景美 这是11月4日在乌鲁木齐市南山风景区拍摄的雪景(无人机拍摄)。 深秋时节,乌鲁木齐市南部山区已是一片银装素裹。雪山、林海、村庄,在大地上组成美丽的生...

    2024-12-05 18:05:18
  • ​童颜女神全宝蓝

    童颜女神全宝蓝 在众多爱豆里全宝蓝是最特殊的一个,她在组合中算是比较透明的一个。 在2019年节目中回忆她退团的原因时,她曾说过:有时候参加音乐节目时会感到很无奈。因为明...

    2024-12-05 18:03:03
  • ​通知丨53路公交延伸至西咸客运枢纽站!咸阳亲别坐错了~

    通知丨53路公交延伸至西咸客运枢纽站!咸阳亲别坐错了~ 咸运集团西咸综合交通枢纽于今日正式启用,为方便广大市民换乘,19日起53路将正式延伸至西咸综合交通枢纽,成为首条进驻...

    2024-12-05 18:00:48
  • ​世界上公认的三个穿越者,中国这位穿越者也太明显了吧

    世界上公认的三个穿越者,中国这位穿越者也太明显了吧 纵观世界历史,出现过许多政治家、科学家、哲学家,他们因超前的思维创造出各种先进技术为世人所知,而在这些人当中却有...

    2024-12-05 17:58:33
  • ​浅井茶茶:江户时代的第一宠妾

    浅井茶茶:江户时代的第一宠妾 江户时代的浅井三姐妹以她们的美貌和经历成为了一代传奇。其中小妹浅井江身份地位最尊崇,成为了二代幕府将军的正室。而大姐浅井茶茶的命运则更...

    2024-12-05 17:56:18
  • ​靠近深圳的惠阳区未来是美好的,但是当下惠州最好地段是在惠城区

    靠近深圳的惠阳区未来是美好的,但是当下惠州最好地段是在惠城区 纵观惠州的发展,人们最关注的就是惠城区与惠阳区哪里发展得更好。 说句心里话惠州是一座沿海城市,未来肯定...

    2024-12-05 17:54:03
  • ​交流接触器的作用是什么?

    交流接触器的作用是什么? 一个“五一”假期结束啦,我们都回到自己的工作中了。今天我们就来学习一下交流接触器的作用是什么? 交流接触器的作用是接通或断开电源,并且能代...

    2024-12-05 17:51:48
  • ​中国民俗摄影协会在这里举行揭牌仪式暨摄影技巧分享交流会举行

    中国民俗摄影协会在这里举行揭牌仪式暨摄影技巧分享交流会举行 2023年8月26日,中国民俗摄影协会(CFPA)西部工作站咸阳联络处乔迁揭牌仪式暨摄影技巧交流分享会在咸阳民生综合市...

    2024-12-05 12:54:53
  • ​他3岁时参加《出彩中国人》逗翻全场,短短几年帅气逼人判若两人

    他3岁时参加《出彩中国人》逗翻全场,短短几年帅气逼人判若两人 在如今信息高速发展的社会,走红的方式各式各样,有人靠吃饭多走红,有人靠微笑走红,有人靠唱歌走红,而张俊...

    2024-12-05 12:52:38
  • ​时尚圈大热的Normcore风格到底是啥,你真的懂吗?

    时尚圈大热的Normcore风格到底是啥,你真的懂吗? Normcore不知道大家是否陌生,这个词最初是由K-Hole机构创造出来的,它集合了Normal-平淡、正常+Hardcare-过硬、核心、死忠、赤裸两个词,...

    2024-12-05 12:50:24
  • ​"兄弟"英语怎么读

    兄弟英语怎么读 兄弟英语怎么读: Brother 释义:同事,弟兄,伙伴; 音标:英 [ˈbrʌðə(r)] 美 [ˈbrʌðər] Fraternal 释义:兄弟的;异卵双生; 音标:英 [frəˈtɜːnl] 美 [frəˈtɜːrnl] Brotherly 释...

    2024-12-05 12:48:09
  • ​又有中国球员上榜,世界史上五大球王

    又有中国球员上榜,世界史上五大球王 德国媒体评论足球史五大“球王”:贝利位居榜首,中国球员上榜! 看到“球王”两个字,我想很多人都会想到贝利和马拉多纳,其实球王的评...

    2024-12-05 12:45:54
  • ​杨宗纬连发微博秒删:内涵他人惹争议,他让自己人设崩塌

    杨宗纬连发微博秒删:内涵他人惹争议,他让自己人设崩塌 杨宗纬在突然发文写道:“真的想做女明星,勇敢去动个手术就好。2020了,戏瘾还这么足啊?”,虽然之后他秒删了,但这...

    2024-12-05 12:43:40
  • ​封神鸿钧老祖为何降落红尘?七大圣人结局如何?

    封神鸿钧老祖为何降落红尘?七大圣人结局如何? 关注叶之秋头条号,了解更多封神隐秘 封神大战中,通天教主在诛仙阵、万仙阵中两次大败,截教损兵折将,死伤众多,几乎团灭。...

    2024-12-05 12:41:25
  • ​大韩民国首都-首尔

    大韩民国首都-首尔 首尔Seoul,旧称汉城。大韩民国首都,是世界第十大城市、朝鲜半岛最大的城市,亚洲主要金融城市之一;也是韩国的政治、经济、科技、教育、文化中心。由于是王...

    2024-12-05 12:39:10
  • ​初学者最关心的问题—长笛好学吗?学长笛有什么优势?

    初学者最关心的问题—长笛好学吗?学长笛有什么优势? 长笛是一种非常受欢迎的西洋乐器,那么想要学习的新手都会有一点担忧,长笛好学吗?下面小编就为大家介绍一下吧! 长笛...

    2024-12-05 12:36:55