return与exit()
1.return是C語言提供的,exit()是操作系統(tǒng)提供的(或者函數(shù)庫中給出的)。exit()是一個庫函數(shù),通常情況:exit(0)表示程序正常,exit(1)和exit(-1)表示程序異常退出,exit(2)表示表示系統(tǒng)找不到指定的文件。在整個程序中,只要調(diào)用exit()就結(jié)束(當(dāng)前進程或者在main()時候為整個程序)。在stdlib.h中exit()函數(shù)是這樣子定義的:void exit(int status)。這個系統(tǒng)調(diào)用是用來終止一個進程的,無論在程序中的什么位置,只要執(zhí)行exit,進程就會從終止進程的運行。
exit(0):正常運行程序并退出程序;
exit(!0):非正常運行導(dǎo)致退出程序;
return:返回函數(shù),若在主函數(shù)中,則會退出函數(shù)并返回一值。
2.return用于結(jié)束一個函數(shù)的執(zhí)行,將函數(shù)的執(zhí)行信息傳出給其他調(diào)用函數(shù)使用;exit()函數(shù)是退出應(yīng)用程序,刪除進程使用的內(nèi)存空間,并將應(yīng)用程序的一個狀態(tài)返回給OS或其父進程,這個狀態(tài)標(biāo)識了應(yīng)用程序的一些運行信息,這個信息和機器和操作系統(tǒng)有關(guān),一般是0為正常退出, 非0為非正常退出,理論上exit()可以返回小于256的任何整數(shù)。
3. return返回函數(shù)值并退出函數(shù),是關(guān)鍵字;exit()是一個函數(shù)。
4.return是語言級別的,它表示了調(diào)用堆棧的返回;return是當(dāng)前函數(shù)返回,當(dāng)然如果是在主函數(shù)main(), 自然也就結(jié)束當(dāng)前進程了,如果不是,那就是退回上一層調(diào)用。在多個進程時。如果有時要檢測上個進程是否正常退出。就要用到上個進程的返回值,依次類推。而exit()是系統(tǒng)調(diào)用級別的,它表示了一個進程的結(jié)束。
5. return是函數(shù)的退出(返回);exit函數(shù)是進程的退出,它退出應(yīng)用程序,并將應(yīng)用程序的一個狀態(tài)返回給OS,這個狀態(tài)標(biāo)識了應(yīng)用程序的一些運行信息。
6.非主函數(shù)中調(diào)用return和exit()效果很明顯,但是在main函數(shù)中調(diào)用return和exit的現(xiàn)象就很模糊,多數(shù)情況下現(xiàn)象都是一致的。
C 標(biāo)準(zhǔn)規(guī)定,主函數(shù)返回時,如果其類型與 int 兼容,則此返回的效果應(yīng)該是 exit(返回值) 。看起來,main() 函數(shù)可以選擇以 return 結(jié)束,也可以選擇使用 exit() 結(jié)束,兩者的區(qū)別不大。但是事實上 return 和直接調(diào)用 exit() 的效果并不完全一樣。如果使用 return,則 main() 函數(shù)的棧幀將回收并失效。
---------------------?
轉(zhuǎn)自https://blog.csdn.net/wumenglu1018/article/details/53300765
總結(jié)
以上是生活随笔為你收集整理的return与exit()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 元气骑士蓝币怎么刷最快?
- 下一篇: 内存中的堆和栈