热文网 > 杂谈 > 正文

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

时间:2023-12-19 19:44

来源:热文网

点击:

浅谈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函数的返回值,以便判断进程是否正常运行。

相关标签:

相关推荐

​骡子究竟是什么来历 为什么骡子不能怀孕?

​骡子究竟是什么来历 为什么骡子不能怀孕?

骡子究竟是什么来历 为什么骡子不能怀孕? 骡子不是一个正经物种,是在好心人牵线下,由马和驴临时凑合的杂交物种。骡子出身一直挺尴尬,更尴尬的是大家都知骡子不能生育。 极...

2023-12-19 19:42:28

​欧洲杯淘汰赛打响-欧洲杯淘汰赛2021

​欧洲杯淘汰赛打响-欧洲杯淘汰赛2021

欧洲杯淘汰赛打响-欧洲杯淘汰赛2021 今天,我想和大家分享一下欧洲杯淘汰赛打响。以下是这个问题的总结,深入探讨欧洲杯淘汰赛2021的各个方面要点精华。让我们一起来深入探索吧,...

2023-12-19 13:01:25

​has的用法及原型是什么 has的用法及句型

​has的用法及原型是什么 has的用法及句型

has的用法及原型是什么 has的用法及句型 今天,我想和大家分享一下has的用法及原型是什么。以下是这个问题的总结,深入探讨has的用法及句型的各个方面要点精华。让我们一起来深入...

2023-12-19 12:59:11

​费启鸣(从网红逆袭到演员,费启鸣做到了)

​费启鸣(从网红逆袭到演员,费启鸣做到了)

费启鸣(从网红逆袭到演员,费启鸣做到了) 最近,《二十不惑2》里“职场刺客”齐颂的发言频频在网络出圈,被观众评价为“大家的互联网嘴替”。 齐颂(费启鸣 饰)聪明睿智有创造...

2023-12-19 12:56:56

​周星驰又被爆“黑料”(周星驰被黑社会威胁过吗)

​周星驰又被爆“黑料”(周星驰被黑社会威胁过吗)

周星驰又被爆“黑料”(周星驰被黑社会威胁过吗) 今天,我想和大家分享一下周星驰又被爆“黑料”。以下是这个问题的总结,深入探讨周星驰被黑社会威胁过吗的各个方面要点精华...

2023-12-19 12:54:41

​欧阳修简介(欧阳修简介)

​欧阳修简介(欧阳修简介)

欧阳修简介(欧阳修简介) 点滴笔墨,诉不尽欧公的一身风骨;些许文字,写不完欧公的一世风韵。欧公无愧于“道德文章百世师”之称号,他的为政、为文、为人之道,足以垂范后世!...

2023-12-19 12:52:26

​华北电力大学专业(华北电力大学2023专业分出炉了)

​华北电力大学专业(华北电力大学2023专业分出炉了)

华北电力大学专业(华北电力大学2023专业分出炉了) 2023专业分:华北电力大学,又有多人迈入国家电网的门槛了! 备注: 2024高考前,争取做到已发布专业分的高校,都整理汇总2023专业...

2023-12-19 12:50:11

​乙羧氟草醚(乙氧氟草醚与乙羧氟草醚一字之差)

乙羧氟草醚(乙氧氟草醚与乙羧氟草醚一字之差) 乙氧氟草醚与乙羧氟草醚都是“二苯醚类除草剂”,虽然2者只有一字之差,但是它们的药效却有很大的不同。 图片01):乙氧氟草醚可用...

2023-12-19 12:47:56

​天津高考时间2022具体时间(天津2022年春季高考时间调整)

天津高考时间2022具体时间(天津2022年春季高考时间调整) 据“天津市教育招生考试院”微信公众号消息,经市有关部门综合研判, 天津市2022年春季高考(面向普通高中毕业生、面向中职...

2023-12-19 12:45:41

​四川肥肠的正宗做法,步骤明确,值得参考

​四川肥肠的正宗做法,步骤明确,值得参考

四川肥肠的正宗做法,步骤明确,值得参考 干煸肥肠 材料:猪大肠、洋葱、柿子椒、葱、姜、老抽、生抽、白酒、蒜、八角、桂皮、香叶、白糖、食盐、干辣椒。 1.肥肠入锅,加老抽...

2023-12-19 12:43:27

​你必须掌握的文言文通假字(文言文通假字整理)

​你必须掌握的文言文通假字(文言文通假字整理)

你必须掌握的文言文通假字(文言文通假字整理) 今天,我想和大家分享一下你必须掌握的文言文通假字。以下是这个问题的总结,深入探讨文言文通假字整理的各个方面要点精华。让...

2023-12-19 12:41:12

​土耳其人为何要屠杀亚美尼亚人?

​土耳其人为何要屠杀亚美尼亚人?

土耳其人为何要屠杀亚美尼亚人? 20世纪初,1915年至1917年期间,奥斯曼土耳其针对东方六省的亚美尼亚人展开了血腥大屠杀,最终导致了100多万的亚美尼亚人死亡,另有数十万亚美尼亚...

2023-12-19 05:58:06

​唐朝历史上著名的九位公主

​唐朝历史上著名的九位公主

唐朝历史上著名的九位公主 众所周知,唐朝是有很多位公主的朝代之一。下面小编为大家盘点唐朝历史著名的九位公主。那么,唐朝哪九位公主最出名?九位公主分别都因何出名? 1、...

2023-12-19 05:55:51

​汉文帝刘恒的母亲薄姬简单介绍

​汉文帝刘恒的母亲薄姬简单介绍

汉文帝刘恒的母亲薄姬简单介绍 刘恒是谁的儿子?很多人都生有这个疑问。今天我特意去查了些资料,原来汉文帝刘恒的母亲就是薄姬。 薄姬什么时候生的不得而知,死在公元前155年...

2023-12-19 05:53:36

​宋高宗赵构生平简介

​宋高宗赵构生平简介

宋高宗赵构生平简介 南宋开国皇帝,宋高宗赵构(1107——1187),字德基。宋徽宗第九子,宋钦宗之弟,曾被封为“康王”。公元1127年(靖康二年)金兵俘徽、钦二宗北去后,于应天府即位...

2023-12-19 05:51:21

​魏延究竟是怎么死的?他难道就没有其他出路了吗?

​魏延究竟是怎么死的?他难道就没有其他出路了吗?

魏延究竟是怎么死的?他难道就没有其他出路了吗? 三国(220年-280年)是中国历史上位于汉朝之后,晋朝之前的一段历史时期。这一个时期,先后出现了曹魏、蜀汉、东吴三个主要政权。...

2023-12-19 05:49:06

​宋朝大情种皇帝:宋仁宗有多宠爱张贵妃?

宋朝大情种皇帝:宋仁宗有多宠爱张贵妃? 宋朝大情种皇帝:宋仁宗有多宠爱张贵妃?历史资料小编为大家带来相关内容,感兴趣的小伙伴快来看看吧! 若是要给宋朝皇帝弄个情种的称号...

2023-12-19 05:46:52

​古代郡县制到底有什么好处 秦国和秦朝为什么都选择郡县制

​古代郡县制到底有什么好处 秦国和秦朝为什么都选择郡县制

古代郡县制到底有什么好处 秦国和秦朝为什么都选择郡县制 对郡县制很感兴趣的小伙伴们,历史资料小编带来详细的文章供大家参考。从秦国到秦朝,为何义无反顾、始终如一地选择...

2023-12-19 05:44:37

​杨坚作为隋朝开国皇帝 杨坚是一个什么样的皇帝

​杨坚作为隋朝开国皇帝 杨坚是一个什么样的皇帝

杨坚作为隋朝开国皇帝 杨坚是一个什么样的皇帝 还不了解:隋朝杨坚的读者,下面历史资料小编就为大家带来详细介绍,接着往下看吧~历史上真实的杨坚,是一个怎样的皇帝? 杨氏出...

2023-12-19 05:42:22

​刘邦有几个儿子,他们的结局都怎么样呢?

刘邦有几个儿子,他们的结局都怎么样呢? 汉高祖刘邦八个儿子悲惨命运。汉高祖刘邦原配夫人皇后吕雉,据《史记》记载,刘邦的妻子有:正宫皇后吕雉、最宠爱的戚姬、汉文帝的母...

2023-12-19 05:40:07